Php Kohana 3.3:何处陈述与关系

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 这也可以方便地

我已经设置了带有关系定义的Kohana模型(1:*和:使用
),但想知道在
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
}