Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔外键关系_Php_Laravel_Eloquent - Fatal编程技术网

Php 拉威尔外键关系

Php 拉威尔外键关系,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个奇怪的问题 我有一个用户表和一个公司表。一个用户属于一家公司,而一家公司有许多用户 表的两个主键都是id 在laravel文档中,我阅读了以下内容: 此外,Eloquent假设外键应该具有 与父项的id列匹配的值 我在我的公司模型中有这个: protected $table = 'company'; public function users() { return $this->hasMany(UserModel::class); } 当我尝试这个: $

我有一个奇怪的问题

我有一个用户表和一个公司表。一个用户属于一家公司,而一家公司有许多用户

表的两个主键都是id

在laravel文档中,我阅读了以下内容:

此外,Eloquent假设外键应该具有 与父项的id列匹配的值

我在我的
公司模型中有这个:

protected $table = 'company';

public function users()
   {
      return $this->hasMany(UserModel::class);
   }
当我尝试这个:

$users = CompanyModel::find(1)->users;
dd($users);
它不起作用了。当我在关系中添加外键时,它会起作用!?:

protected $table = 'company';

public function users()
  {
     return $this->hasMany(UserModel::class, 'id');
  }
这很奇怪,对吧?我到底做错了什么

--编辑--


在我的
users
表中,我有一个
company\u id

首先,我建议您将模型从
CompanyModel
重命名为
Company
,并从
UserModel
重命名为
User

然后确保您的
users
表中有
company\u id
。在您的
用户
迁移文件中,将
用户
表与
公司
表连接起来,如下所示:

$table->integer('company_id')->unsigned(); $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade'); $table->integer('company_id')->unsigned(); $table->foreign('company_id')->references('id')->on('companys')->onDelete('cascade'); 别忘了刷新数据库

然后在模型中,定义如下关系:

// User model // Laravel will automatically identify and use the `company_id` field in your reference public function company(){ return $this->belongsTo(Company::class); } // Company model public function users(){ return $this->hasMany(User::class); } //用户模型 //Laravel将自动识别并使用您参考中的“公司id”字段 公共职能公司(){ 返回$this->belongsTo(公司::类); } //公司模式 公共功能用户(){ 返回$this->hasMany(用户::类); } 然后,您可以在控制器中提取记录,如下所示:

$user = User::find(1); $user_company = $user->company; // This might not be necessary in your controller, you can do it in your view dd($users, $user_company); $user=user::find(1); $user\u company=$user->company;//这在控制器中可能不是必需的,您可以在视图中执行 dd($用户,$用户\公司);
文档表明,用户表中有一个公司id列。添加“id”得到的结果可能是错误的。我的用户表中有一个公司id列!我认为您应该在用户表中有一个company\u model\u id列,或者在关系中添加“company\u id”而不是“id”作为外键。您在用户模型中也有belongsTo方法,对吗?它是否与('users')一起工作$users=CompanyModel::find(1)->;