簡體   English   中英

跨多個模型構建條件語句(CakePHP 1.2.5)

[英]Building conditional statement across multiple models (CakePHP 1.2.5)

假設我有3個模型:用戶,地區和國家/地區。

User belongsTo Region
Region belongsTo Country

這些模型中的每一個都使用Containable行為。 我正在嘗試使用代碼“ US”從該國家/地區查找用戶。 這是我正在嘗試的:

$users = $this->User->find('all', array(
    'conditions' => array('Country.code' => 'US'),
    'contain'    => array('Region.Country'),
));

CakePHP將其分為兩個查詢:

  1. 首先,它為代碼為“ US”的所有國家/地區選擇ID。
  2. 然后,它將使用這些ID來選擇所有加入區域的用戶,這些區域中的region.country_id在先前檢索到的國家ID列表中。

結果,由於我的conditions數組包含對Country.code的引用,而Cake生成的第二個查詢未加入國家/地區,因此我在應用中遇到了SQL錯誤。

我看到的最好的Cake解決方案是按照手冊的“ 復雜查找條件”部分所述構建子查詢。 但是,這似乎很令人費解,並且比我想實現的更多的是hack。 有沒有一種我可以忽略的簡便方法?

Nate Abele(CakePHP的前首席開發人員)寫了一篇有關進行臨時連接的文章,這可能會有所幫助。

將條件也放入容器中。 例如:

$users = $this->User->find('all', array('contain' => array(
    'Region' => array(
        'Country' => array(
            'conditions' => array('Country.code' => 'US'),
        ),
    ),
)));

請參見《包含》手冊的倒數第二個示例

暫無
暫無

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

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