1

ユーザーとそのクライアントの間に1対多の関係を設定しようとしています。モデルを次のように設定すると、単一のクライアントにアクセスできます。

class Model_User extends Model_Auth_User {
    protected $_has_one = array(
        'client' => array(
            'model' => 'Client',
            'foreign_key' => 'user_id')
    );
    [...]

しかし、$ _ has_manyに切り替えようとすると、次のようになります。

class Model_User extends Model_Auth_User {
    protected $_has_many = array(
        'clients' => array(
            'model' => 'Client',
            'foreign_key' => 'user_id')
    );
    [...]

次のエラーが発生します。

Database_Exception [ 1103 ]: Incorrect table name '' [ SELECT COUNT(*) AS `records_found` FROM `` WHERE = '74' AND IN ('4') ]

何が悪いのかわからない。

4

2 に答える 2

1

問題が見つかりました。User モデルで $_has_many プロパティを宣言すると、ロールとトークン情報を含む Kohana ソース ファイルの同じプロパティが上書きされました。

Kohana の Model_Auth_User から値をコピーし、私のプロパティを追加することで解決しました:

protected $_has_many = array(
    'user_tokens' => array('model' => 'User_Token'),
    'roles'       => array('model' => 'Role', 'through' => 'roles_users'),
    'clients'     => array('model' => 'Client', 'foreign_key' => 'user_id'),
);
于 2013-03-29T21:24:18.950 に答える
0

クライアントではどのように表示されますか? 「Client -> has_one -> User」の場合、これは問題になりません。

「Client -> has_many -> User」の場合、has_manyが必要です。

于 2013-03-25T16:21:40.023 に答える