如何在laravel中使用数组字段分配关系和获取数据

时间:2016-12-30 07:48:50

标签: php mongodb laravel-5

有两种型号:餐厅和类别

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

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

如何在laravel 5.3中使用Restaurant的数组字段(类别)分配关系并获取所有类别,数据库是mongodb?

1 个答案:

答案 0 :(得分: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;