2016-07-30 161 views
0

我有一種既不是一對一也不是一對多的關係,我想知道是否有可能在Laravel/Eloquent模型中表達自定義關係。是否可以在Laravel模型中創建自定義關係?

基本上我有屬於一個類別的產品,但多個產品可以屬於同一類別。 products表存儲category_id。這顯然不是一對一的,因爲類別被重用,Laravel需要在categories表上使用product_id外鍵。它更接近於一對多,僅限於單個項目,但我寧願不必額外創建一個表來定義單個關係。我懷疑這是多對一的關係?

回答

1

顯然,這是一個一一對多的關係,其中一個category的hasMany產品和product屬於關聯到一個category

  1. 基本上我有屬於一個類別的產品。等價於:a product歸屬於單個category
  2. 多個產品可以屬於同一類別。 相當於:a category hasMany products。

因此,下面的關係將工作:

class Product extends Model 
{ 

    public function category() 
    { 
     return $this->belongsTo('App\Category'); 
    } 
} 

和:

class Category extends Model 
{ 
    public function products() 
    { 
     return $this->hasMany('App\Product'); 
    } 
} 

我希望這將有助於。

+0

你說得對,很明顯,我工作太遲了!我正在考慮這種關係是錯誤的,因此「多對一」就好像產品擁有這個類別,當然這是相反的方式 - 因此是「一對多」的反面。 – baseten

相關問題