2016-02-19 50 views
0

我做的,把我带到了错误的函数:调用未定义的方法照亮数据库雄辩收藏::保存()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); 
} 

回答

0

我看不出你的模型是如何构建的,但它看起来像你实际上已经将模型转换为关系:即。 $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); 
+0

你认为塞缪尔错误原因的关系? – Priya

+0

很难说你的代码,因为我不明白你是如何建立你的关系,但得到这个权利可以走很长的路... –

+0

没有什么happnd Cloete我不明白这个错误是什么意思 – Priya

0

通过雄辩返回的所有多结果集,无论是通过GET方法或关系,将返回集合对象。如果查询的结果可能返回多个值,则Laravel会返回一个集合。了解返回集合的查询方法可以节省调用集合上的Eloquent模型方法的问题。

您的查询很可能会从数据库返回多条记录,或者从数据库返回多条记录。这会导致'Eloquent'返回一个Collection,即使找到的记录数是1。由于返回的值是一个集合,我们需要遍历返回的集合以访问各个模型。

因此,尝试更换您的代码如下:

$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(); 
}); 

希望它可能工作。

+0

你也可以使用简单的foreach循环方法来遍历返回的集合以访问个人模式。 –

+0

like:foreach($ user as $ user){ $ user-> parent_id = $ parent_id; $ user-> updated_by = $ parent_id; $ user-> save(); } –

相关问题