[英]Laravel: Call to undefined method Illuminate\Database\Eloquent\Collection::where()
[英]Call to undefined method Illuminate\Database\Eloquent\Collection::save() laravel
我做了一個使我犯錯誤的函數:
Call to undefined method Illuminate\\Database\\Eloquent\\Collection::save()
我不明白為什么會扔
public function multiplelinkPlayerWithFamily($parent_id)
{
$player_id = Input::get('player_id');
$CheckRelationship = UsersRelationship::where('parent_user_id', $parent_id)->where('child_user_id', $player_id)->first();
if($CheckRelationship) {
return Response::json( [
'ok'=> false,
'message'=> 'The profiles are currently linked '
] ,422);
}
$user = User::find($player_id);
$user->parent_id = $parent_id;
$user->updated_by = $parent_id;
$user->save();
$UsersRelationship = new UsersRelationship;
$UsersRelationship->parent_user_id = $parent_id;
$UsersRelationship->child_user_id = $player_id;
$UsersRelationship->save();
$udata = ApiUserController::getLoginUserData();
return Response::json([
'ok'=> true,
'message'=> 'Linked',
'udata'=> $udata
] ,200);
}
我看不到您的模型是如何構造的,但是看起來您實際上已經將模型轉換為關系:即。 $UsersRelationship
似乎您正在嘗試在用戶之間建立多對多關系,對嗎?
public function parents()
{
return $this->belongsToMany('User','users_relationships','child_id','parent_id');
}
public function children()
{
return $this->belongsToMany('User','users_relationships','parent_id','child_id');
}
建立正確的關系后,您可以致電:
$user->parents()->attach($parent_id);
Eloquent通過get方法或關系返回的所有多結果集都將返回一個集合對象。 如果查詢的結果可能返回多個值,Laravel將返回一個集合。 了解返回集合的查詢方法將為您節省在集合上調用Eloquent模型方法的問題。
您的查詢最有可能從數據庫返回一個以上的記錄,或者從數據庫中返回一個以上的記錄。 即使找到的記錄數為1,這也將導致'Eloquent'返回一個Collection。 因為返回的值是Collection,所以我們需要遍歷返回的集合以訪問單個Model。
因此,請嘗試替換以下代碼:
$user = User::find($player_id);
$user->parent_id = $parent_id;
$user->updated_by = $parent_id;
$user->save();
並按如下所示替換它:
$user = User::find($player_id);
$user->each(function($user)
{
$user->parent_id = $parent_id;
$user->updated_by = $parent_id;
$user->save();
});
希望它可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.