Eloquent 模型 belongsTo 关系在 L4 中不起作用
Eloquent model belongsTo relationship not working in L4
我有以下表格:
用户
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('username', 30);
$table->string('email')->unique();
$table->string('password', 60);
$table->string('remember_token')->nullable();
$table->timestamps();
});
组织
Schema::create('organisations', function(Blueprint $table)
{
$table->increments('id');
$table->string('name')->unique('name');
$table->integer('owner_id')->unsigned()->index()->nullable();
$table->foreign('owner_id')->references('id')->on('users');
$table->timestamps();
});
我有以下 组织 Eloquent 模型:
class Organisation extends Eloquent {
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function owner()
{
return $this->belongsTo('User', 'owner_id', 'id');
}
}
在我的控制器上,我加载所有 organisations
并将其传递给视图,如下所示:
public function index()
{
return View::make('organisations.index')
->with('organisations', Organisation::all());
}
在我看来,当我尝试像这样显示数据时:
@foreach($organisations as $organisation)
<div>
Name : {{ $organisation->name }}
<br>
Owner: {{ $organisation->owner()->email }}
</div>
@endofreach
当我这样做时,我得到一个对象是 null
异常。
我也试过用hasOne
关系,也没用。
知道我这里可能做错了什么吗?
试试这个:
@foreach($organisations as $organisation)
<div>
Name : {{ $organisation->name }}
<br>
Owner: {{ $organisation->owner->email }}
</div>
@endforeach
没有所有者的 ()
。这样你得到一个 Model\User 对象而不是 belongsTo 对象。 BelongsTo 对象不包含任何用户信息,但允许您添加更多 eloquent 方法来过滤查询。
我有以下表格:
用户
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('username', 30);
$table->string('email')->unique();
$table->string('password', 60);
$table->string('remember_token')->nullable();
$table->timestamps();
});
组织
Schema::create('organisations', function(Blueprint $table)
{
$table->increments('id');
$table->string('name')->unique('name');
$table->integer('owner_id')->unsigned()->index()->nullable();
$table->foreign('owner_id')->references('id')->on('users');
$table->timestamps();
});
我有以下 组织 Eloquent 模型:
class Organisation extends Eloquent {
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function owner()
{
return $this->belongsTo('User', 'owner_id', 'id');
}
}
在我的控制器上,我加载所有 organisations
并将其传递给视图,如下所示:
public function index()
{
return View::make('organisations.index')
->with('organisations', Organisation::all());
}
在我看来,当我尝试像这样显示数据时:
@foreach($organisations as $organisation)
<div>
Name : {{ $organisation->name }}
<br>
Owner: {{ $organisation->owner()->email }}
</div>
@endofreach
当我这样做时,我得到一个对象是 null
异常。
我也试过用hasOne
关系,也没用。
知道我这里可能做错了什么吗?
试试这个:
@foreach($organisations as $organisation)
<div>
Name : {{ $organisation->name }}
<br>
Owner: {{ $organisation->owner->email }}
</div>
@endforeach
没有所有者的 ()
。这样你得到一个 Model\User 对象而不是 belongsTo 对象。 BelongsTo 对象不包含任何用户信息,但允许您添加更多 eloquent 方法来过滤查询。