1

モデルでユーザー アカウントとフレンドの関係を作成しようとしています。

この例https://github.com/masom/li3_microblogから作業を行っていますが、最終的には、どこにも指定していないフィールドである Friends テーブルでフィールド user_id が見つからなかったことを示すエラーが表示されます。

これが私のMySQLテーブルです:

users        friends
-----        -------
id           id ( just the primary key )
username     uid ( foreign key to users.id )
             friend_uid ( foreign key to users.id )

ユーザー モデル:

namespace app\models;

class Users extends \lithium\data\Model {
    public $hasMany = array('Friends' => array('keys'=>array('id'=>'uid')));
}

友人モデル:

namespace app\models;

class Friends extends \lithium\data\Model {
    public $belongsTo = array(
         'Friend' => array('to'=>'app\models\Users','keys'=>array('friend_uid'=>'id')),
         'User' => array('to'=>'app\models\Users','keys'=>array('uid'=>'id'))
    );
}

ユーザーコントローラー.php

namespace app\controllers;

use app\models\Users;
use app\models\Friends;

class UsersController extends \lithium\action\Controller {

  public function index() {

    $conditions = array('Users.id'=>$this->request->id);
    $with = array('Friends');

    $user = Users::find('first',compact('conditions','with'));

    $conditions = array('Friends.friend'=>$user->id);
    $with = array('Friend');
    $friends = Friends::all(compact('conditions','with'));

    return compact('user','friends');        

 }

}

これで、致命的なエラーが発生します。Friends テーブルでフィールド user_id を見つけようとしています。

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Friends.user_id' in 'on clause'' in /Users/path/Documents/mamp_root/name/libraries/lithium/data/source/database/adapter/MySql.php:

どこが間違っているのか誰か教えてもらえますか?

4

1 に答える 1

2

チュートリアルが最後に更新されたのは 1 年前のようです。ある時点で構成オプションが から'keys'に変更されたことを知っている'key'ので、それを試すことができます。

于 2012-10-21T21:08:02.043 に答える