Php Larave BelongsTo关系返回null

Php Larave BelongsTo关系返回null,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有两个雄辩的模型: 1)项目: null 类项目扩展模型 { 受保护的$table='项目'; 受保护的$fillable=['id','user_id','account_id']; 公共函数用户(){ 返回$this->belongsTo(用户::类); } 公共职能账户() { 返回$this->belongsTo(Account::class,“Account_id”); } 2)账户: null 类帐户扩展模型 { // ... 公共职能项目(){ 返回$this->hasMa

我有两个雄辩的模型:

1)项目:

null
类项目扩展模型
{
受保护的$table='项目';
受保护的$fillable=['id','user_id','account_id'];
公共函数用户(){
返回$this->belongsTo(用户::类);
}
公共职能账户()
{
返回$this->belongsTo(Account::class,“Account_id”);
}
2)账户:

null
类帐户扩展模型
{
// ...
公共职能项目(){
返回$this->hasMany(项目::类);
}
目标是返回项目的帐户:

Project::with("account")->get()->pluck("account");
结果:

null

为什么不使用这个呢?查询中没有任何条件,所以直接获取所有帐户

Account::all();
如果你有条件,你可以使用这个

Account::whereHas('projects', function($query){
    $query->where('user_id', 1); //projects' user_id
})->get();


你不能做一些像:

$projects = Project::all();

$projects->each(function($project) {
  echo $project->account
})

每个项目都有一个账户

Project::with('account')->get()
这意味着您将使用他们的帐户获取项目,而某些项目可能还没有帐户。在这种情况下,当您尝试获取帐户时,您将获得空值

$projects=Project::with('account')->get();

$projects->first()->account
(这里您不确定account是否存在)

Project::whereHas('account')->get()
这一个将只获取拥有帐户的项目

您编写的这行代码,
Project::with(“account”)->get()->pull(“account”);

当你运行它时,如果你有多个项目有他们的帐户,而有些项目没有帐户,你的结果将是这样的

App\Account..
App\Account..
null
null
App\Account..
如果您想使用您的代码,您需要使用集合过滤器进行过滤,然后删除该帐户以跳过空帐户(不建议这样做)


你好@alprnkeskekoglu,谢谢你的回答。事实上,我目前正在按项目(基于项目模型)制作一个自定义过滤器在这种情况下,它不会解决问题。嗨@François Auclair,谢谢你的回答。事实上,它可以,但有没有一种方法可以使用它?你可以共享你的db列名吗?如果你想使用,你必须按列名使用(在这种情况下,如果我没有错的话,你可以使用account来使用它)只要拿到身份证,你以后就可以用它做点什么了