gpt4 book ai didi

php - 如何通过连接列过滤 R::findAll() 结果? - 红 bean PHP4

转载 作者:行者123 更新时间:2023-11-29 02:48:17 24 4
gpt4 key购买 nike

我是 RedBeanPHP 的新手,我研究了他们的文档,但无法找到如何过滤 R::findAll() 结果,就像我们如何通过 $ 过滤共享列表一样bean->withCondition('...', [...]);?

我的案例:

我有两个表user, usertype,它们是一对多的关系,这意味着每个用户都必须有一个用户类型,并且多个用户可以是同一类型。

表:用户类型

+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | UNI | NULL | |
| psname | varchar(10) | NO | UNI | NULL | |
+--------+------------------+------+-----+---------+----------------+

表:用户

+-------------+---------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+-------------------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(16) | NO | UNI | NULL | |
| password | char(60) | NO | | NULL | |
| email | varchar(64) | NO | UNI | NULL | |
| is_active | tinyint(1) unsigned | NO | | 0 | |
| created_at | datetime | NO | | CURRENT_TIMESTAMP | |
| usertype_id | int(11) unsigned | NO | MUL | NULL | |
+-------------+---------------------+------+-----+-------------------+----------------+

所以现在我只想检索类型不是 ADMIN 的用户,但以下内容不起作用:

$not_admins = R::findAll('user', 'WHERE @joined.usertype.type != ?', ['ADMIN']);

您可以检查相同的语法是否适用于 withCondition() 方法但仅适用于检索相关记录或 RedBeanPHP 术语适用于/过滤器仅共享 bean。

最佳答案

您可以对 where 进行子查询,例如:

R::findAll('users', '(SELECT type FROM usertype WHERE usertype.id = users.id) != :type', [':type'=>'admin']);

另一种方法,您可以按照 Nick 的建议运行普通查询,但使用 $query = R::getAll('...') 而不是 $query = R: :exec('...'); 然后你可以使用 R::convertToBeans($query); 获取 beans 对象或通过数组访问数据(无需转换)

关于php - 如何通过连接列过滤 R::findAll() 结果? - 红 bean PHP4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39178617/

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