Php Laravel HasMany relationship未定义属性:Illumb\Database\Eloquent\Relations\HasMany::$id

Php Laravel HasMany relationship未定义属性:Illumb\Database\Eloquent\Relations\HasMany::$id,php,laravel,Php,Laravel,我在读取具有关系的数据时遇到问题。它如何返回未定义的属性:illumb\Database\elounce\Relations\HasMany::$id。我不知道我做错了什么,因为我刚刚开始使用laravel 模型1项目: namespace App; use Illuminate\Database\Eloquent\Model; class Project extends Model { protected $table = "project"; public function p

我在读取具有关系的数据时遇到问题。它如何返回未定义的属性:illumb\Database\elounce\Relations\HasMany::$id。我不知道我做错了什么,因为我刚刚开始使用laravel

模型1项目:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Project extends Model
{
    protected $table = "project";

public function projectitem()
    {
        return $this->hasMany('App\Projectitem');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Projectitem extends Model
{
    protected $table = "project_item";

    function project(){

        return $this->belongsTo('App\Project');

    }
}
模型2项目项:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Project extends Model
{
    protected $table = "project";

public function projectitem()
    {
        return $this->hasMany('App\Projectitem');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Projectitem extends Model
{
    protected $table = "project_item";

    function project(){

        return $this->belongsTo('App\Project');

    }
}
index.php

 @foreach ($projects as $project) 
       <tr>
           <td>{{$project->projectitem()->id}}</td>
           <td></td>
      </tr>
     @endforeach
@foreach($projects作为$project)
{{$project->projectitem()->id}
@endforeach
我不知道为什么会发生这种情况,我尝试过几种解决方案,但似乎都不管用

任何帮助都将不胜感激

看看关系- 它有很多关系。也就是说,项目上有很多项目项

试试这个

 @foreach ($projects as $project) 
    @foreach ($project->projectitem as $projectitem)
       echo $projectitem->id
    @endforeach
 @endforeach

注意:只有当关系为hasMany时,才需要此内部循环。如果是hasOne,则无需更改循环中的任何内容,只需将关系更改为hasOne并运行即可

您在
$Projects
中有Projects对象集合。执行循环后,根据循环的状态,每个项目都将成为
$project
。调用
projectitem
时,它将返回
projectitem
的集合,而不是单个
projectitem
,这就是
$id
未定义的原因。您应该形成另一个循环来分别获取每个项目项

@foreach ($projects as $project) 

    // $project->projectitem() return a collection of projectitem 
    // and not a single projectitem
    // to access ID of each projectitem you must perform another loop

    @foreach ($project->projectitem() as $projectitem)
         // here project id is disponible as property accessible like this
         {{ $projectitem->id }}
    @endforeach
@endforeach

是否要在同一列中显示所有相关的“projectitem”?