2016-12-30 21 views
0

陣列領域如何分配關係和獲取數據有兩種模式:餐廳和類別使用laravel

Restaurant{ 
    '_id' : 12345678 
    'name' : "xyz", 
    'abstract' : "awdwadawdawdawd", 
    'category': [1,2,3,4] //category ids 
} 

Category{ 
    '_id' : 1, 
    'name' : 'PQR' 
} 

我如何分配關係,並利用餐廳進行陣列領域(類別)獲取所有類別laravel 5.3和數據庫是mongodb?

回答

1

我不太清楚你的數據庫結構,但我認爲這將是最好創建一個新的數據透視表存儲每個餐廳的類別不同的​​行這樣的:

id | restaurant_id | category_id 
1 | 23   | 3 
2 | 23   | 5 
3 | 25   | 4 

作爲約定表應該被命名爲'category_restaurant'

這將是laravel中的多對多關係。

class Restaurant 
{ 
    public function categories() 
    { 
     return $this->belongsToMany(Category::class); 
    } 
} 

class Category 
{ 
    public function restaurants() 
    { 
     return $this->belongsToMany(Restaurant::class); 
    } 
} 

然後在你的代碼,你可以得到一個餐廳的ID以這樣的方式

$restaurant = Restaurant::find(1); 
$categories = $restaurant->categories; 
+0

下面是關於它的文檔:[多對多關係(https://laravel.com /docs/5.3/eloquent-relationships#many-to-many)。 – isa424

+0

對不起,我沒有注意到Mongodb的一部分。不知道如何在Mongo中實現它。 – isa424

+0

是的!我知道這一點,但我想知道如何使用mongodb數組字段@ isa424來實現此功能 – PassionInfinite