我有三张桌子:
User
- id
- email
UserAccount
- id
- user_id
- account_id
Account
- id
- user_id
Verification
- id
- user_id
- guid
每当我尝试添加用户
时,我试图获得一个帖子,它会自动添加一个帐户
,其中包含用户id
,验证
表以及用户id
,同时,一旦创建了帐户
,它还应该记录用户帐户
用户id
和帐户id
,但我使用多对多关系归属
和同步
结束了这个错误。如何使用eloquent添加帐户id
和用户id
?
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'acct_id' cannot be null (SQL: insert into `user_accounts` (`acct_id`, `user_id`) values (?, 17))
这就是我迄今为止所尝试的。
控制器。php
$user = new User();
$user->name = "Not set";
$user->email = $email;
$user->password = NULL;
$user->save();
$accounts = new Account();
$accounts->email = $email;
$user->account()->save($accounts);
$userAccount = new UserAccount();
$userAccount->userAccount()->sync([
$user->id,
$accounts->id
]);
使用者php
public function account()
{
return $this->hasMany(Account::class);
}
public function userAccount()
{
return $this->belongsToMany(User::class, UserAccount::class, 'user_id', 'id');
}
UserACcount.php
public function user()
{
return $this->hasMany(User::class, 'user_id', 'id');
}
public function account()
{
return $this->hasMany(Account::class, 'acct_id', 'id');
}
public function userAccount()
{
return $this->belongsToMany(Account::class, UserAccount::class, 'acct_id', 'user_id');
}
Verification.php
public function user()
{
return $this->belongsTo(User::class, 'user_id', 'id');
}
账户php
public function user()
{
return $this->hasMany(User::class);
}
public function userAccount()
{
return $this->belongsTo(UserAccount::class);
}
我尝试使用这个功能,完全可以正常工作,但我很确定这就是它如何与雄辩。
$userAcct = new UserAccount();
$userAcct->create([
'user_id' => $user->id,
'acct_id' => $accounts->id
]);
有什么想法吗?
我也发现了这个相关的问题(Laravel hasManyPass)
// Post Model
public function user()
{
return $this->belongsTo('App\User');
}
public function categories()
{
return $this->belongsToMany('App\Category')->withTimestamps();
}
public function tags()
{
return $this->belongsToMany('App\Tag')->withTimestamps();
}
//User Model
public function posts()
{
return $this->hasMany('App\Post');
}
//Category Model
public function posts()
{
return $this->belongsToMany('App\Post')->withTimestamps();
}
//Tag Model
public function posts()
{
return $this->belongsToMany('App\Post')->withTimestamps();
}
首先,您应该从account
表中删除user\u id
,因为它已经被链接两个表的user\u account
引用。此外,如果您想利用有说服力的约定来猜测表名和字段,您应该确保您的表名为用户
、帐户
、验证
和帐户用户
。
使用者php
public function accounts()
{
return $this->belongsToMany(Account::class);
}
账户php
public function users()
{
return $this->belongsToMany(User::class);
}
如果account\u user
仅存在链接2个表,则UserAccount
模型无效。
然后,您可以使用观察者来获得基于事件的方法:每当创建用户时=
https://laravel.com/docs/5.8/eloquent#observers
<?php
namespace App\Observers;
use App\Account;
use App\Verification;
class UserObserver
{
/**
* Handle the User "created" event.
*
* @param \App\User $user
* @return void
*/
public function created(User $user)
{
(new Verification)->user()->associate($user);
$account = new Account;
$account->save();
$user->accounts()->attach([
$account->id
]);
}
}
我的结构如下: 3张表格:电影、演员、类型 电影表模式: 类型表架构: 演员表架构: 电影模组: 体裁模态: 演员模式: 表格: 我使用以下控制器方法从表单发布数据,一切正常,但当我提交2部电影具有相同的流派,例如“动作/戏剧”,我在流派表中得到2个单独的条目,如: id:1名称:动作/戏剧 ID: 2名称:动作/戏剧 对于一个特定的流派类型,反复使用单个id的最佳方法是什么?例如,如果我添加了1
我得到了一个相当简单的应用程序,用户可以报告其他用户的评论和食谱。我使用多态关系来存储报告。它工作得很好;然而,我现在正试图了解用户所犯的罪行。 获取用户报告不是问题,这可以直接使用
我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可
我有帖子表和评论表。我想得到所有的帖子与它的评论和以下返回只是帖子有评论: 更新 例如 ID帖 1个职位1 2后2 id post\u id评论 1萨姆勒大学评论 Post::with('comments')只返回有注释的帖子,它只返回第一篇帖子,因为第二篇帖子没有注释,我想获取所有帖子(有注释或没有注释)
如何使用laravel雄辩的ORM关系在多个表中发出一个插入请求。即 表1:用户 id 姓名 电子邮件 表2:员额 id 表3:图像 id 用户id 邮政id 图像名称 关系 表id引用了其他两个表中的 表与
我试着补充: 并用调用,但响应为空。