我刚下载并使用最新的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
模型 - 结果相同。