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

Larvel一对多关系结果

夔波
2023-03-14

你好,我正试图建立一对多的关系。用户表中的一个用户可以有多个公司,另一边的公司只能有一个用户。

我的公司表迁移是

  public function up()
    {
        Schema::create('companies', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('address');
            $table->string('city');
            $table->string('state');
            $table->string('contact_person');
            $table->string('phone');
            $table->string('industry');
            $table->string('website');
            $table->integer('id_user')->unsigned();
            $table->foreign('id_user')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
            $table->timestamps();
        });
    }

我的用户模型是

  /**
     * Get the posts for the user.
     */
    public function companies()
    {
        return $this->hasOne('App\Company','user_id');
    }

我的公司模式是

   public function users()
    {
        return $this->belongsTo('App\User','id');
    }

我正试图获得特定用户的所有公司

尝试使用whereHas,但对象中没有数据

      $results = Company::whereHas('users', function ($query) {
         $query->where('users.id',1);
       })->get();

我的错误在哪里?

共有1个答案

饶德本
2023-03-14

首先要更改的是companys()关系。它必须是hasMany,而不是hasOne

public function companies()
{
    return $this->hasMany('App\Company');
}

然后获得用户与他所有的公司:

$result = User::where('id', $id)->with('companies')->first();

或者,如果您想使用Company模型,就像您的示例中那样,并且只获取公司:

$result = Company::where('user_id', $id)->get();

另外,您在迁移中使用了id\u user。将其更改为user\u id

 类似资料:
  • 这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统

  • 在数据库表之间,绝大多数的关系很可能是一对多的关系,一个表中的记录有可能与另一个表中的许多记录相关。 创建一对多关系的过程与创建一对一关系完全相同。 让我们先通过单击设计 选项卡上清除布局 选项清除布局。 再添加另一个表,如以下屏幕截图所示。 点击保存图标并输入作为表名,然后转到关系视图。 点击显示表选项,然后选择两个表: 和 。如下所示 - 添加和并关闭显示表格对话框。 我们再次执行相同的操作过

  • 我在hibernate中搜索建立关系的各种可能性,遇到了下面的代码片段

  • 对于我正在构建的一个类似论坛的网站,我有PHP类'user'和'post‘。用户有一个帖子数组。如何与关系数据库中的连接相似?在“post”上有一个外键,指向一个“user”?这对我来说是有意义的,因为这是一对一的关系,而“user”到“post”是一对多的,就我所见。欢迎有任何想法-谢谢!

  • 问题内容: 假设我有一个具有两个不同的一对多关系的对象。很像: 和 假设我的对象有两个与这两个对象相关的列表。 我已经阅读了以下示例:http : //forum.springsource.org/showthread.php?50617-rowmapper -with-one-to-many- query,其中说明了如何使用单个一对多关系来执行此操作。为了您的方便,这里是替代: 我认为这并不涉及