我在laravel上使用多个更新或创建方法时遇到了麻烦。
我的问题很简单;
我有这样的友谊表。
user_id_1, user_id_2, point
首先;
我想,给x点10分友谊。
但是,如果不存在友谊,那么用x点创造新的友谊。
如果友谊存在则将点数更新为x点
我只需要在where子句中使用updateOrCreate函数。当然,如果支持多次插入,例如model :: insert方法。
有人可以帮帮我吗?答案 0 :(得分:0)
您需要做的是创建利用数据透视表。看看雄辩中的多对多关系:
https://laravel.com/docs/5.2/eloquent-relationships#many-to-many
您需要使用其他模型或表格设计用户之间的关系。从那里你可以计算Point模型的点数。
编辑(摘要):如此缺乏设计整个架构并发布它(这不是如何使用Stackoverflow),答案就是你的痛点似乎是雄辩而不仅仅是宁静的功能。
答案 1 :(得分:0)
您需要创建一个循环,通过验证第一个用户的ID == user_id_1或== user_id_2以及第二个用户== user_id_1或== user_id_2来查找两个用户是否已经建立关系。 如果结果为null则:这些用户之间没有关系 要更新您需要的关系,只需更新搜索结果的点列 我将用代码示例解释
$user_one=$request->id1;
$user_two=$request->id2;
$result= DB::table('your_table_name')->where(function($query) use ($user_one,$user_two){
$query->where('user_id_1',$user_one)
->orWhere('user_id_1',$user_two);})->orWhere(function($query) use ($user_one,$user_two){
$query->where('user_id_2',$user_one)
->orWhere('user_id_2',$user_two);})->get();
if(empty(result))
{
/* create your relation*/
}
else
{
/*update your point column with x*/
}