簡體   English   中英

Laravel 4 /雄辯的ORM:是否可以獲取關系背后的對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM