gpt4 book ai didi

php - 将元素同步到 Laravel 上的子元素

转载 作者:行者123 更新时间:2023-11-29 22:19:39 25 4
gpt4 key购买 nike

我的 Shema 数据库是

用户表

    id
login
parent

签名表

    id
name
user_id (Sign owner)

数据透视表 user_sign

    id
user_id
sign_id

我的用户模型包含

    public function signs() {
return $this->belongsToMany('App\Sign', 'user_sign');
}


public function parent(){
return $this->belongsTo('User', 'parent');
}

public function children(){
return $this->hasMany('User', 'parent', 'user_id');
}

我的 Sign 模型包含

    public function users() {
return $this->belongsToMany('App\User', 'user_sign')->select(['users.id','name']);
}

父用户可以通过此路由将 Sign 附加/同步到子用户(他发送 sign_id 和 child_id)

    Route::put('sign/share', 'SignController@share')

要执行此操作,我必须在我的 Controller 中检查:- 如果sign_id的所有者是$user_id- 如果child_id是$user_id的子级

之后,我进行附加/同步。

现在,在我的 Controller 中我有:

public function share(Request $request)
{
$userId = $request->input('user_id');
$sign = Sign::where('user_id', $userId)->find($id);

if(!$sign){
return response()->json(['message'=>'FAIL'], 404);
}
}

但在此之后我完全被阻止了...可以在一行中检查并附加吗?

感谢您的帮助

最佳答案

就同步/附加而言,您可以使用此 sytanx

$user->roles()->sync([1, 2, 3]);

Laravel Docs 中所示

您可以在 IF 条件下进行这两项检查,并在 true 的情况下进行分配,这就是您的 Controller 最终的样子。

    public function share(Request $request)
{
$userId = $request->input('user_id');
$signId = $request->input('sign_id');
$childId = $request->input('child_id');
if (Sign::find($singId)->user_id == $userId && User::find($userId)->child_id == $childId)
{

//Attach the sign to child user
User::find($childId)->signs()->attach($signId);

}
else
{

return response()->json(['message'=>'FAIL'], 404);

}
}

关于php - 将元素同步到 Laravel 上的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869432/

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