你好,我正试图建立一对多的关系。用户表中的一个用户可以有多个公司,另一边的公司只能有一个用户。
我的公司表迁移是
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();
我的错误在哪里?
首先要更改的是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,其中说明了如何使用单个一对多关系来执行此操作。为了您的方便,这里是替代: 我认为这并不涉及