我试图将 belongsTo 插入我的数据透视表。我有一个评论和文档表,其中包含一对多关系,评论和用户表格多对多的关系。数据透视表是 comment_user 。
我可以插入 belongsTo 关系,但我遇到问题,我需要将评论id
与用户id
一起插入(当前用户) 。请参阅下面的我的关系。
数据库图表
模型:
注释
class Comment extends Model
{
protected $tables = 'comments';
protected $fillable =
[
'comment',
'document_id',
];
public function users()
{
return $this->belongsToMany('App\Models\User', 'comment_user', 'comment_id', 'user_id');
}
public function documents()
{
return $this->belongsTo('App\Models\Document');
}
}
用户:
class User extends Model implements AuthenticatableContract
{
use Authenticatable;
protected $table = 'users';
protected $fillable = [
'first_name',
'last_name',
'middle_name',
'email',
'username',
'address',
'password',
'role_permission_id',
];
public function comments()
{
return $this->belongsToMany('App\Models\Comment', 'comment_user', 'user_id', 'comment_id');
}
}
控制器:
class CommentController extends Controller
{
public function postComments(Request $request, Document $id)
{
$this->validate($request,
[
'comment' => 'required',
]);
$commentObject = new Comment();
$user = Auth::user();
$commentObject->comment = $request->comment;
$id->comments()->save($commentObject);
$commentObject->users()->sync(['comment_id' => $commentObject, 'user_id' => $user->id],false);
return redirect()->back();
}
}
问题
我只想插入模型评论的id
以及当前用户。我试过了,但它说。
$commentObject->users()->sync(['user_id' => $user->id],false);
SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(
webdev
。comment_user
,CONSTRAINTcomment_user_sender_id_foreign
FOREIGN KEY({{ 1}})REFERENCESsender_id
(users
)ON DELETE CASCADE)(SQL:插入id
(comment_user
,comment_id
)值(36,11) )
正如您在此处所见, 36 是Comment的当前ID, 11 是登录用户的当前ID。任何帮助我怎样才能做到这一点?
答案 0 :(得分:1)
执行此操作时,您尝试将null放入具有外键约束的sender_id中。我假设你还应该像这样添加一个发件人ID:
$commentObject->users()->sync(['user_id' => $user->id, 'sender_id' => $whatever],false);