0

リレーションシップ define (1:* and : using ) を使用して Kohana モデルをセットアップしましたが、ステートメントthroughでそれらを使用する最良の方法を知りたいと思っていました。WHERE

例: 私はUserモデルとモデルを持っていPostます。Postへの外部キー ( userID) がありますUser

エイリアスを使用$_has_manyしてモデルに関係を設定しましたUseruser_created

実際のフィールドを使用できることはわかってuserIDいますが、このようなことができるようにしたいです

$user->where('user_created', 'IS', NULL);

これは、このようなもので多対多かどうかを確認するのにも便利です

'm2m_relation_count', '>', 0

これは可能ですか?ありがとう!

4

2 に答える 2

0

次の方法で、Kohana の ORM を使用してこれを行うことができます。

$user->user_created->find_all();

これにより、ユーザーが作成したすべての投稿が作成されます。

ユーザーが投稿を作成したかどうかを確認したい場合は、同じ関数を使用count()して結果に対して a を実行し、それが 0 より大きいかどうかを確認します。

where句自体でエイリアスを使用できるとは思いません。ORM オブジェクトから呼び出す必要があります。

多対多の関係も同じように機能します。

于 2012-12-19T10:39:05.800 に答える
0

1) 投稿なしですべてのユーザーを取得する簡単な方法はありません。特別な列を追加post_countして、投稿後にインクリメントすることをお勧めします。

has()2) /has_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
}
于 2012-12-19T19:08:50.993 に答える