モデルの関係を従来の方法で定義してもらいましたが、うまく機能しています。しかし、バリデーションを簡単にするために Ardent を使い始めたところ、Eloquent の関係を定義するための便利な機能があることに気付きました。
https://github.com/laravelbook/ardent#relations
これを文脈に入れるために、場所(この例では地理的)に属しているユーザーモデルがあります。
以前は、次を使用していました。
public function location(){
return $this->belongsTo('Location', 'location');
}
私は何の問題もありませんでした。Ardent の方法に切り替えることで、次のような結果が得られました。
protected static $relationsData = array(
'location' => array(self::BELONGS_TO, 'Location', 'foreignKey' => 'location')
);
ユーザーの場所ではなく、常に null を返します。
ユーザー.php
use LaravelBook\Ardent\Ardent;
class User extends Ardent implements UserInterface, RemindableInterface {
protected static $table = 'agents';
protected static $relationsData = array(
'location' => array(self::BELONGS_TO, 'Location', 'foreignKey' => 'location')
);
}
データベース エージェント ID: int(11) PK の場所: int(11) FK(locations.id)
*locations*
id: int(11) PK
longtext: text
同じだけで構文が異なるため、これが何も返さない理由がわかりません。
Laravel のやり方に戻ることもできますが、私は Ardent の構文の方が好きです。