Database 如何使用id从laravel中的其他表中获取数据?

Database 如何使用id从laravel中的其他表中获取数据?,database,laravel,Database,Laravel,我想在发布项目的帖子中显示用户名。但它的显示错误是:试图获取视图文件中非对象的属性 我有用户表和项目表。在项目表中,我有外键user_id。但我无法从user表访问用户名,甚至无法访问用户id。在项目表中,用户id为0,与用户表中的不同。我该如何解决这个问题 用户模型: public function project() { return $this->hasMany('App\Project'); } 项目模型: public function User() { r

我想在发布项目的帖子中显示用户名。但它的显示错误是:试图获取视图文件中非对象的属性

我有用户表和项目表。在项目表中,我有外键user_id。但我无法从user表访问用户名,甚至无法访问用户id。在项目表中,用户id为0,与用户表中的不同。我该如何解决这个问题

用户模型:

 public function project()
{
    return $this->hasMany('App\Project');
}
项目模型:

public function User() {

    return $this->belongsTo('App\User','user_id');
}
迁移用户表:

   Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
迁移项目表:

   Schema::create('projects', function (Blueprint $table) {
        $table->increments('id')->unique();
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->string('name');
        $table->text('description');
        $table->date('date');
        $table->timestamps('date');


    });
查看文件:

   @foreach ($projects as $key => $project)
   <tr>
    <td>{{ ++$i }}</td>
    <td>{{ $project->name }}</td>
    <td> {{$project->user_id->name}}</td>
    <td>{{ $project->description }}</td>
    <td>{{ $project->date }}</td>
@foreach($key=>$project作为$key的项目)
{{++$i}
{{$project->name}
{{$project->user\u id->name}
{{$project->description}
{{$project->date}

您无法通过项目id访问发布项目的用户。您需要引用关系,然后调用模型属性。像这样:

  @foreach ($projects as   $project)
   <tr>
    <td>{{ ++$i }}</td>
    <td>{{ $project->name }}</td>
    <td> {{$project->user->name}}</td>
    <td>{{ $project->description }}</td>
    <td>{{ $project->date }}</td>
  @endforeach
@foreach($projects作为$project)
{{++$i}
{{$project->name}
{{$project->user->name}
{{$project->description}
{{$project->date}
@endforeach
1)更正表格中的小错误,如用户id和用户id

2) 让我来解决第一个关系:

一个用户可以有多个项目。 一个项目可以属于一个用户

模型类求解

class Project extend Modeletcc
{
    public function projectusers() {
      return $this->hasOne('App\Project', 'user_id', 'id);
    }

}
然后从控制器获取数据,例如

class ProjectController extends Controller {

      // to get data
      public function __contstruct() {
          $this->project = Project::with('projectusers')->get();
      }

    // function for ending data to view 
    public function tesview() {

    return view('view whic you wanna send your data', 
         [
           'project_details' => $this->project
         ]);
    }
然后在内部视图中,您可以简单地获取所需的所有数据

查看刀片u可以使用普通php简单地获取它们
用小写的users写方法名。users表
id
必须对应于projects表中的
user\u id
。这就是关系存在的地方。您检查是否正确了吗?用户表中的id和项目表中的用户id不相同。在项目表中,所有id均为0。我应该如何纠正这个问题?首先,如何创建项目?能否显示控制器中的代码片段,或者在向项目添加新记录的任何位置?为什么显示错误:为foreach()提供的参数无效?确定使用print_r()获取它,然后解决它。看看里面是什么,然后你就可以很容易地解决它
@foreach($project_details as $project) {

           @foreach($project->projectusers as $users) {
              {{ $user->name }} 
            }

   }