gpt4 book ai didi

php - 在 CakePHP shell 中搜索

转载 作者:行者123 更新时间:2023-11-30 00:39:31 25 4
gpt4 key购买 nike

我正在使用 CakePHP 2.3.8,但在 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] => test@example.com
[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
)

)

)

我正在搜索订阅,并且想根据角色进行限制。如果是试用帐户或管理员,请跳过它。然而,cake 似乎不允许我搜索这些连接的表

当我尝试以下查询时

$companies = $this->Company->find('all',array(
'conditions' => array(
'User.role !=' => array('admin','trial'), //don't select any admins or trial members
)
));

我收到以下错误SQLSTATE[42S22]:未找到列:1054“where 子句”中的未知列“User.role”

我不能在 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] => test@example.com
[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
(
)

我只希望它在满足用户条件的情况下选择一家公司。这可能吗?

最佳答案

您的想法是正确的,但我认为 NOT equals 的语法不正确。试试这个:

$this->Company->find('all', array(
'conditions' => array(
'NOT' => array(
'User.role' => array('admin','trial')
)
)
));

关于php - 在 CakePHP shell 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21889290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com