如何使用 Laravel 获取具有表之间关系的数据
Posted
技术标签:
【中文标题】如何使用 Laravel 获取具有表之间关系的数据【英文标题】:How get data having relationships between tables using Laravel 【发布时间】:2020-06-13 09:51:01 【问题描述】:我有一个带有 Laravel 的 API,我决定使用表之间的关系,我已经在所有迁移中使用这些函数将它们关联起来:
// Migration file: 2020_05_26_185555_create_customers_table.php on line 27
$table->foreign('user_id')->references('id')->on('users');
然后我实现了如下功能: (获取与之相关的记录):
// Model app\User.php on line 80
public function customers()
return $this->hasMany(Customer::class);
在客户控制器上,如何使用上面显示的功能列出该用户**的所有客户,即替换以下代码:
// Controller Customer\CustomerController.php on line 17
public function index()
$user_id = Auth::id();
$customers = Customer::where('user_id', $user_id)->get();
return $this->showAll($customers, 200, $filters);
对于类似以下的东西(只是一个例子,它不起作用,但这是我的意思的想法):
// Controller Customer\CustomerController.php on line 17
public function index()
$customers = User::customers(); // Ejemplo
return $this->showAll($customers, 200, $filters);
我的目标是在相关表之间创建关系,例如用户的客户**,而不使用条件,就像我当前的代码实现一样。
有人可以帮我解决这个问题吗?
【问题讨论】:
$customers = Auth::user()->customers;
应该可以完成这项工作。
【参考方案1】:
您可以使用关系的动态属性来访问它(并加载它):
public function index()
$user = Auth::user();
$customers = $user->customers;
...
Laravel 7.x Docs - Eloquent - Relationships - Relationship Methods vs Dynamic Properties
【讨论】:
以上是关于如何使用 Laravel 获取具有表之间关系的数据的主要内容,如果未能解决你的问题,请参考以下文章