[英]Laravel 4 / Eloquent ORM: Is it possible to obtain the object behind a relation?
假設我有這兩類:
class User extends Eloquent
{
public function phone()
{
return $this->hasMany('phone');
}
}
class Phone extends Eloquent
{
public function user()
{
return $this->belongsTo('user');
}
}
(關系不一定以這種方式顯示。)
我正在嘗試通過使用訪問器來實現這一點:
class Phone extends Eloquent
{
public function user()
{
return $this->belongsTo('user');
}
public function getNumberAttribute($value)
{
//Grant access to the User object who has this Phone.
$userWhoOwnsThisPhoneNumber = /*SOMETHING*/;
/*For example, $userWhoOwnsThisPhoneNumber->phone should return THIS phone object. */
//...
}
}
然后也許做這樣的事情:
$user = User::find($id)->phone->number;
我多次瀏覽了文檔,找不到任何有用的信息。 Laravel 4可以做這樣的事情嗎?
因為每個用戶可能擁有多個電話,所以您的關系應該是:
class User extends Eloquent
{
public function phones() /// <--- this is just to be clearer
{
return $this->hasMany('phone');
}
}
class Phone extends Eloquent
{
public function user()
{
return $this->belongsTo('user');
}
}
而且您不需要任何acessor,除非您需要更改數字中的任何內容,所以您可以:
$user = User::find($id);
$phones = $user->phones;
foreach ($phones as $phone)
{
echo $phone->user->name;
}
要不就
foreach (User::find($id)->phones as $phone)
{
echo $phone->user->name;
}
你也可以
$phone = Phone::where('number','555-5050')->first();
echo $phone->user->name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.