如何使用口才关系获取嵌套表的数据-Laravel?

时间:2018-10-18 21:36:44

标签: php laravel eloquent

我有两个表:1.类别,2.项目

Categories.php

____________
id | name
___|________
 1 | shirt
 2 | shoes

Items.php

__________________________
id | categories_id | name
___|_______________|______
 1 |   1           | casual
 2 |   1           | dress
 3 |   2           | leather
 4 |   2           | jogar

现在,我想使用口才关系获取两个表的数据。

所需的数组:

[
  'name' => 'shirts',
  'items' => ['casual', 'dress']
],
[
   'name' => 'shoes',
   'items' => ['leather', 'jogar']
 ]

3 个答案:

答案 0 :(得分:2)

首先,您需要定义自己的关系。

从您的数据库结构看,一个Category似乎有许多Items。因此,在这种情况下,它可以是One-to-ManyMany-to-many关系。我将在这个答案中去第一个。

现在,在模型中定义关系。

Category.php

public function items()
{
    return $this->hasMany(Item::class);
}

Items.php

public function category()
{
    return $this->belongsTo(Category::class);
}

现在,在查询结果时,您可以简单地使用with()方法来eager load关系项

// Perform your query and load the relationship
$categories = Category::with('items')->get();

load()lazy eager loading相关项目。

// Perform your query
$categories = Category::all();
// load the related items
$categories->load('items');

答案 1 :(得分:0)

链接到文档:Eloquent Relationships

在您的 Items.php

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

从此开始使用:

$items = new Items;
$category = $items->category;

答案 2 :(得分:0)

制作模型后的类别和项目 您可以转到“类别”控制器并通过

从“类别”获取数据
$cat = Category::all();

别忘了添加

use App\Category; 

和同样的东西,如果您想要Item, 最好的问候