Php Kohana 3.3:何处陈述与关系
我已经设置了带有关系定义的Kohana模型(1:*和:使用Php Kohana 3.3:何处陈述与关系,php,kohana,Php,Kohana,我已经设置了带有关系定义的Kohana模型(1:*和:使用到),但想知道在WHERE语句中使用它们的最佳方法 示例:我有一个User模型和一个Post模型Post有一个外键(userID)指向User 我已经设置了一个$\u在用户模型上有许多关系,并创建了一个别名用户 我知道我可以使用实际字段userID,但我希望能够这样做 $user->where('user_created', 'IS', NULL); 'm2m_relation_count', '>', 0 这也可以方便地
到),但想知道在WHERE
语句中使用它们的最佳方法
示例:我有一个User
模型和一个Post
模型Post
有一个外键(userID
)指向User
我已经设置了一个$\u在用户
模型上有许多关系,并创建了一个别名用户
我知道我可以使用实际字段userID
,但我希望能够这样做
$user->where('user_created', 'IS', NULL);
'm2m_relation_count', '>', 0
这也可以方便地检查多对多是否使用了类似的东西
$user->where('user_created', 'IS', NULL);
'm2m_relation_count', '>', 0
这可能吗?谢谢 您可以通过以下方式使用Kohana中的ORM执行此操作
$user->user_created->find_all();
这将导致用户创建的所有帖子
如果要检查用户是否创建了帖子,只需使用相同的函数,对结果执行count()
,并检查其是否大于0
我认为您不能在where
子句本身中使用别名。您必须从ORM对象调用它
多对多关系的工作方式是相同的。1)没有快速的方法可以让所有用户不发帖子。我更喜欢添加特殊列post\u count
,并在过帐后增加它
2) 您可以使用has()
/has\u any()
方法检查用户的m:m关系:
if ($user->has('roles')) {
// user has at least one role
}
if ($user->has('roles', $roleId) {
// user has role with id=$roleId
}
if ($user->has('roles', array($roleId1, $roleId2))) {
// user has both $roleId and $roleId2 roles
}
if ($user->has_any('roles', array($roleId1, $roleId2))) {
// user has on of the $roleId1 or $roleId2
}