我刚刚下载和启动一个新的项目与最新Laravel 4.2。
我的问题是在User
模式,如果我定义它不工作的任何关系。
用户模型
use Illuminate\Auth\UserTrait; use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableTrait; use Illuminate\Auth\Reminders\RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = array('password', 'remember_token'); public function metadata() { return $this->hasOne('Metadata'); } public function test() { return "hello test"; } }
元数据模型
class Metadata extends Eloquent { public $timestamps = false; protected $primaryKey = 'user_id'; protected $table = "users_metadata"; protected $fillable = array('user_id', 'first_name', 'last_name'); public function user() { return $this->belongsTo('User'); } }
所以,如果我这样做
$user = User::find(1);
dd($user->metadata);
我回去Null
,以上我在做了一个试验方法, User
模型
如果我这样做:
$user = User::find(1);
dd($user->test());
我得到
Call to undefined method Illuminate\Database\Query\Builder::test()
为什么? 这是明显存在的。 我把我的代码在更早的版本,它工作得很好。
而真正让我困惑的是,如果我这样做:
$metadata = Metadata::find(1);
dd($metadata->user);
它正常工作与belongsTo
方法,我测试User
模型与其他关系-相同的结果。