我是RedBeanPHP的新手我研究了他们的文档,但是我们无法找到如何过滤ViewModel
结果,就像我们通过R::findAll()
过滤共享列表的方式一样?
我的情况:
我有两个表$bean->withCondition('...', [...]);
并且它们具有一对多关系意味着每个用户必须具有usertype且多个用户可以是相同类型。
user, usertype
table: 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 | |
+--------+------------------+------+-----+---------+----------------+
table: user
所以现在我只想检索类型不是+-------------+---------------------+------+-----+-------------------+----------------+
| 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']);
方法,但仅用于检索相关记录,或者通过RedBeanPHP术语工作/仅过滤共享bean。
答案 0 :(得分:1)
您可以在哪里进行子查询,例如:
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);
来获取bean对象或通过数组访问数据(没有转换)
答案 1 :(得分:0)
更容易避免rb连接而只是做mysql
使用
R::exec('select from user inner join other on some id=id where foo = :foo',['foo'=>'some_value']