簡體   English   中英

跨多個表的 phalcon 模型條件

[英]phalcon model conditions across multiple tables

我是 phalcon 和 mvc 的新手,所以請耐心等待。

我有兩個表,媒體和用戶,分別帶有媒體和用戶模型。 下面的代碼

use Phalcon\Mvc\Model;        
class Media extends Model
        {

            public $media_id, $user, $media_type, $title, $status_on, $visible, $modified_date;

            public function initialize()
            {
                $this->belongsTo('user', 'users', 'user_id');
            }
        }
use Phalcon\Mvc\Model;        
class Users extends Model
    {
        public $user_id, $first_name, $last_name, $email_address, $status, $created_on;

        public function initialize()
        {
             $this->hasMany('user_id','media','user');
    }
}

我想用以下條件檢索

"title LIKE '%just a text%' AND status_on='P' AND media_type=4 AND status='A'";

這是通過訪問媒體模型的控制器方法完成的

$medium = media::find(array( "conditions" =>$conditions,
                "ORDER" => "modify_date DESC"));

我不斷收到此錯誤

Column 'status' doesn't belong to any of the selected models (1), when preparing: SELECT [Media].* FROM [Media] WHERE title LIKE '%just a text%' AND status_on='P' AND status='A'

請問有人可以幫忙嗎? 我基本上想根據通常以以下形式編寫的 2 個表中的條件檢索記錄

SELECT * FROM media a, users b, WHERE a.user=b.user_id AND a.title LIKE '%just a text%' AND a.status_on='P' AND a.media_type=4 AND b.status='A'

謝謝。

您必須使用查詢構建器來獲得您想要的結果:我在下面創建了一個您可能需要修改的示例——我不確定我是否在 join 方法中正確設置了您的連接列。

$media = $this->modelsManager->createBuilder()
    ->from('Media')
    ->join('Users', 'Media.media_id = Users.user_id', 'u')
    ->where("title LIKE '%just a text%'")
    ->andWhere("status_on='P'")
    ->andWhere("media_type=4")
    ->andWhere("u.status='A'")
    ->getQuery()
    ->execute();

如需進一步說明,請參閱文檔: https : //docs.phalconphp.com/en/latest/reference/phql.html#creating-queries-using-the-query-builder

也可以通過將子查詢用於過濾目的來實現。 這可能不是最優雅的方式,但可以完成工作。

Media::find([
    'conditions' => "title LIKE '%just a text%' AND status='A' AND user_id IN (SELECT user FROM [Media] WHERE [Users].user_id = user AND media_type=4)"
]);

請記住方括號,如果您的模型有命名空間,您應該提供完整路徑,例如[ACME\\Models\\Media].user_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM