2017-05-10 178 views
6

有關Laravel中某些數據模型關係的快速查詢。morphTo和hasMany Laravel

我有一個產品,屬於一個用戶,但用戶可以有很多產品。但是一個產品也可以有很多人對該產品提供報價,

class Product extends Model 
{ 
    public function user(){ 
     return $this->belongsTo('App\User'); 
    } 
    public function offer(){ 
     return $this->hasMany('App\Offer'); 
    } 

但產品也可以有不同的子類型的產品,例如,一個可能是車輛或移動電話,每一個在我的移民不同的列,所以我想我需要變身很多

Product.php

public function imageable() 
{ 
    return $this->morphTo(); 
} 

Vehicle.php

public function products() 
{ 
    return $this->morphMany('App\Product', 'imageable'); 
} 

然而,當調用:

$product = Product::findOrFail($id); 

我得到空當我嘗試做這樣$product->vehicle

什麼,我在我的數據庫到imageable_id在產品表中添加了車輛的ID,和imageable類型產品桌上的'車輛'也是如此。

我在這裏做錯了什麼?

回答

5

一切看起來都正確,你只應通過imageable來訪問它:

$product = Product::findOrFail($id); 
return $product->imageable; 

從Laravel documentation

您也可以通過從 多態模型檢索多態性關係的所有者訪問對morphTo的調用執行 的方法的名稱。

在你的情況下,執行morphTo調用的方法是可成像的。

+0

這就是讓我進一步感謝你,但是我現在得到'''類'車'沒有找到' – iLC

+0

你如何存儲數據在多態表?在數據庫中imageable_type應該是這樣的:'App \ Vehicle' –

+0

啊你是對的,它是數據庫中的App \ Vehicle,謝謝Chase! (我會標記正確的,當SO讓我) – iLC