laravel - hasManyThrough() 仅使用第一个“通过”关系
问题描述
我目前正在努力使用 hasManyThrough() 函数。基本上,我正在尝试加载 n 到 n 关系,但我只想包含第一个“通过”关系。这是一个例子:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
/**
* Get all of the deployments for the project.
*/
public function deployments()
{
return $this->hasManyThrough(Deployment::class, Environment::class);
}
project:
id: 1
name: Project1
environment:
id: 1
project_id: 1
name: environment1
id: 2
project_id: 1
name: environment2
deployment:
id: 1
environment_id: 1
commit_hash: xxxx1
id: 2
environment_id: 1
commit_hash: xxx11
id: 3
environment_id: 2
commit_hash: xxxx2
这里的deployments()
函数显然返回所有deployments
特定environments
的project
. 我如何才能只获取deployments
environments
条目的第一个(或最后一个)projects
条目?在这种情况下,这将是environment
with id: 1
and 部署 with id: 1
and id: 2
,例如。
解决方案
我认为您可能希望像这样指定 hasOne 关系:
// Project.php
public function environment()
{
return $this->hasOne(Environment::class);
}
然后您可以使用以下命令预先加载部署:
Project::with(['environment.deployments'])
我认为您无法developments()
在 Project 上建立关系功能,但有人可能会证明我错了。
推荐阅读
- certificate - IB CP WebAPI 网关证书更改
- php - 带有可选项目的多个文件上传
- python - 在 python 列表中提取带有特定单词的推文。情绪分析
- python - Python - 尝试将用户输入转换为字符串并阻止用户输入非十进制数字时出现问题
- c++ - 为什么默认 noexcept 移动构造函数被接受?
- delphi - Delphi IPWorks XMPP - 搜索用户
- javascript - Redux 在重新加载时失去了 firebase 用户
- python - 在 cx_Oracle 中循环追加大型数据集的 SQL 字典
- django - 如何使用 docker 在 Django 中执行代码导航
- ios - 将 UIView 中输入的数据传递给 Widget