hasManyThrough() use first "through"唯一的关系



我目前正在与hasManyThrough()函数作斗争。基本上,我想加载一个n对n的关系,但我只想包含第一个到第一个的关系。下面是一个例子:

<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
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()函数显然返回特定project的所有environments的所有deployments。我如何能够只获取第一个deployments(或最后一个)projects条目的environments条目?在这种情况下,这将是environmentid: 1以及id: 1id: 2的部署,例如。

我想你可能想要这样指定一个hasOne关系:

// Project.php
public function environment()
{
return $this->hasOne(Environment::class);
}

然后您可以使用:

快速加载部署
Project::with(['environment.deployments'])

我不认为你能在项目上建立一个developments()关系函数,但有人可能会证明我错了。

相关内容

  • 没有找到相关文章

最新更新