当前位置: 首页 > 知识库问答 >
问题:

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

上官霄
2023-03-14

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

我有用户表和项目表。在项目表中,我有外键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>

共有2个答案

杨阳飇
2023-03-14

您无法通过项目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
蒋弘致
2023-03-14

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
         ]);
    }

然后内部视图,你可以简单地得到你想要的所有数据

@foreach($project_details as $project) {

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

   }
 类似资料:
  • 我有一个名为Trade的实体,它可以映射到包含属性的表。这个实体也有一个字段,存储来自另一个表的值。我的贸易表包含第二个表的主键。我知道如何获得整个第二个表作为实体在我的贸易实体,但我只想要1列。 如你所见,我尝试了,但是连接是在贸易实体的主密钥上执行的。我如何使用注释从贸易表中选择外键,将其连接到第二/第三表,并直接只从col2/col3中获取值?任何建议都很感激 餐桌贸易: 表2: 表3: 现

  • 我正在尝试使用这些数据 https://api.nasa.gov/neo/rest/v1/neo/browse?api_key=demo_key 我成功地检索到了数据的“links”和“page”部分,但near_earth_objects数组为NULL。 我尝试了这篇文章中的建议: 使用Spring RestTemplate获取JSON对象列表 顶部答案给出错误: 下面是我的POJO的样子: 我

  • 问题内容: 如何获取位于其他站点上的某个html元素的html? 解: 问题答案: 对php或任何其他文件进行ajax调用,使用CURL或其他工具抓取所需的页面,提取div并回显它,然后当您取回html时,将其放在页面的div中

  • 问题内容: 假设我在first.com中说一个用户设置了一个cookie。现在,我想通过javascript和ajax在second.com中读取该cookie。但这不起作用。我有xmlHttp.status = 0。 样例代码 在第二个域的readcookie.php文件中 在第一个域cookie.php文件中 问题答案: 您无法从其他域读取Cookie-结尾。 我能想到的唯一方法是将一些代码添

  • 我在Android开发者网站http://developer.Android.com/training/animation/screen-slide.html上学习这个教程 我的情况是...