我目前正在与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
条目?在这种情况下,这将是environment
与id: 1
以及id: 1
和id: 2
的部署,例如。
我想你可能想要这样指定一个hasOne关系:
// Project.php
public function environment()
{
return $this->hasOne(Environment::class);
}
然后您可以使用:
快速加载部署Project::with(['environment.deployments'])
我不认为你能在项目上建立一个developments()
关系函数,但有人可能会证明我错了。