gpt4 book ai didi

php - 与 Laravel 的数据库关系

转载 作者:行者123 更新时间:2023-11-29 18:19:13 24 4
gpt4 key购买 nike

我在根据我的数据库结构将数据插入数据库时​​遇到问题。我有3张 table 。 公司表 用户表 分支机构表

现在这就是我如何建立这些表之间的关系。

公司表和用户表具有一对多关系

公司表和分公司表具有一对多关系

分支表和用户表具有一对多关系

这就是我的模型的样子

PS:我只是数据库和laravel的初学者

公司模式

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

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

用户模型

 public function company()
{
return $this->belongsTo('App\Company')
->withTimestamps();
}

public function branches()
{
return $this->belongsTo('App\Branch')
->withTimestamps();
}

分支模型

public function company()
{
return $this->belongsTo('App\Company');

}

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

现在,当用户注册时,只有公司表填充了其详细信息,但用户表和分支表未填充,我收到错误

"SQLSTATE[HY000]: General error: 1364 Field 'company_id' doesn't have a default value (SQL: insert into `branches` (`name`, `updated_at`, `created_at`) values (Virginia, 2017-10-14 03:19:38, 2017-10-14 03:19:38)) ◀"

这就是我在 RegisterController 中保存数据的方式

注册 Controller

protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'phone' => $data['phone'],
'password' => bcrypt($data['password']),

"company_id" => Company::create(
[
"name" => $data['rname'],
"email" => $data['remail'],
"phone" => $data['rphone'],
"address" => $data['raddress']

]
)->id,

"branch_id" => Branch::create (
[
"name" => $data['rbranch']
]
)->id


]);

}

最佳答案

您应该尝试一下这可能对您有帮助:

protected function create(array $data)
{
$company = Company::create(
[
"name" => $data['rname'],
"email" => $data['remail'],
"phone" => $data['rphone'],
"address" => $data['raddress']

]);

更新答案

    $branch = Branch::create (
[
"name" => $data['rbranch'],
"company_id" => $company->id
]
);

if(isset($company->id) && isset($branch->id)){
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'phone' => $data['phone'],
'password' => bcrypt($data['password']),

"company_id" => $company->id,

"branch_id" => $branch->id


]);
} else{
return redirect()->back()->withFlashDanger("company or branch no successfully insterted");

}

}

关于php - 与 Laravel 的数据库关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46740555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com