我正在使用CakePHP 2.3.8,並且在搜索工作中遇到了一些麻煩。我有一個與「訂閱」表有着許多關係並且屬於「用戶」表的「公司」表。我想根據用戶類型來限制我的搜索,但我得到一個錯誤,當我將其包括在搜索(見下文)在CakePHP shell中進行搜索
所以,當我搜索$this->Company->find('all');
這樣的事返回
(
[0] => Array
(
[Company] => Array
(
[id] => 1
[first_name] => Test
[last_name] => Person
[company_name] => Test Company
[address] => 123 Test
[city] => New York
[state] => Ny
[zip] => 12345
[phone] => 1234567
)
[User] => Array
(
[email] => [email protected]
[created] => 2014-01-09
[id] => 1
[role] => user
[username] => TestUser
)
[Subscription] => Array
(
[0] => Array
(
[id] => 1
[user_id] => 1
[start_date] => 2014-01-09
[expire_date] => 2014-07-09
[subscription_plan] => standard
[amount_paid] => 0.00
[status] => valid
)
)
)
我正在通過訂閱進行搜索,我想根據角色進行限制。如果它是試用帳戶或管理員,請跳過它。然而,蛋糕似乎並沒有讓我通過這些連接表
當我嘗試下面的查詢
$companies = $this->Company->find('all',array(
'conditions' => array(
'User.role !=' => array('admin','trial'), //don't select any admins or trial members
)
));
我收到以下錯誤SQLSTATE[42S22]: Column not found: 1054 Unknown column 'User.role' in 'where clause'
我不能進行「加入」搜索在shell中像這樣搜索?當我搜索所有公司並輸出結果時,它顯示正確選擇了用戶表,爲什麼我不能將搜索限制在某些類型的用戶?
編輯 - 我已經切換到使用容器,它部分工作,但也許我只是誤解了包容的功能。這是新搜索
$this->Company->contain(array(
'User' => array(
'conditions' => array(
'User.role !=' => array('owner','site_owner','trial','admin')
)
)
));
$this->companies = $this->Company->find('all');
它選擇每個公司,但只選擇一個用戶(對於該公司),如果它符合標準。這裏有一個例子結果
[0] => Array
(
[Company] => Array
(
[id] => 1
[first_name] => Test
[last_name] => Person
[company_name] => Test Company
[address] => 123 Test
[city] => New York
[state] => Ny
[zip] => 12345
[phone] => 1234567
)
[User] => Array
(
[email] => [email protected]
[created] => 2014-01-09
[id] => 1
[role] => user
[username] => TestUser
)
[1] => Array
(
[Company] => Array
(
[id] => 2
[first_name] => Test2
[last_name] => Person2
[company_name] => Test Company2
[address] => 123 Test
[city] => New York
[state] => Ny
[zip] => 12345
[phone] => 1234567
)
[User] => Array //this user's role is admin so it was not selected
(
)
我只希望它選擇一個公司,如果滿足用戶條件。這甚至有可能嗎?
我在試圖對相關模型做條件時一直有問題。使用可容忍的行爲,而你可能會有更多的運氣。 – Kai
我可以在沒有指定容器的情況下在shell中執行聯合搜索。您是否已在公司模型中正確定義$ belongsTo/$ hasMany? (公司模式中的公司模式不僅限於用戶模式)。這些表在同一個數據庫中嗎? – isick
在我的公司模型中,我擁有belongsTo用戶。在我的用戶我有一個公司。我已經在我的用戶模型中嘗試過使用hasOne,不管發生了什麼,都會發生同樣的事情。 – user1104854