我发疯了,有些东西逃脱了我。
我有一个User模型,它与另一个称为Domain的模型具有hasMany关系
我认为可以用一个命令将两个表中的数据保存起来,但是我发现不是。
修补匠
use App\Models\Albarid\Domain;
$domain = new Domain;
use App\Models\Albarid\User;
$user = new User;
$user->name = 'Jhon Doe';
$user->email = 'mailo@ggmaiol.com'
$user->password = 'hajsdkjhaksdjkhas';
$user->c_password = 'hajsdkjhaksdjkhas';
$domain->domain = 'newdomain.com';
$user->domains()->save($domain)
Illuminate/Database/QueryException with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null (SQL: insert into `domains` (`domain`, `user_id`, `updated_at`, `created_at`) values (nuewdomain.com, ?, 2019-09-30 11:31:47, 2019-09-30 11:31:47))'
是否可以通过一种命令将数据保存在两个表中,还是需要创建第一个用户?
但没有。
由于连接问题似乎并非如此,因此我编写了最广泛的代码。
>>> use App\Models\Albarid\Domain;
>>> $col = Schema::getColumnListing('domain')
=> []
>>> $domain = new Domain;
=> App\Models\Albarid\Domain {#3140}
>>> use App\Models\Albarid\Domain;
>>> $domain = new Domain;
=> App\Models\Albarid\Domain {#3136}
>>> $domain->getTableColumns()
=> [
"id",
"user_id",
"domain",
"description",
"disclaimer",
"aliases",
"mailboxes",
"maillists",
"maxquota",
"quota",
"transport",
"backupmx",
"settings",
"created_at",
"updated_at",
"deleted_at",
"full_deleted_at",
]
>>> $user->getTableColumns()
=> [
"id",
"name",
"email",
"email_verified_at",
"password",
"remember_token",
"is_super_admin",
"created_at",
"updated_at",
]
关系存在
public function domains()
{
return $this->hasMany('App\Models\Albarid\Domain');
}
有一个问题。
我有多个构想,并且在用户模型中也使用trais HasApiTokens
看到这个之后,我认为问题是另外一个问题。对于给您带来的不便,我深表歉意。
答案 0 :(得分:0)
您必须等待创建用户,然后将其ID添加到域表中
use App\Models\Albarid\Domain;
$domain = new Domain;
use App\Models\Albarid\User;
$user = new User;
$user->name = 'Jhon Doe';
$user->email = 'mailo@ggmaiol.com'
$user->password = 'hajsdkjhaksdjkhas';
$user->c_password = 'hajsdkjhaksdjkhas';
$user->save();
$domain->domain = 'newdomain.com';
$domain->user_id = $user->id;
$domain->save();
答案 1 :(得分:0)
首先,您需要定义关系,然后可以使用给定的链接代码在多个表中添加数据
https://laravel.com/docs/5.8/eloquent-relationships#updating-belongs-to-relationships
示例代码
$account = App\Account::find(10);
$user->account()->associate($account);
$user->save();