Laravel Eloquent多个updateOrCreate有一些条件

时间:2016-06-07 20:09:17

标签: mysql laravel

我在laravel上使用多个更新或创建方法时遇到了麻烦。

我的问题很简单;

我有这样的友谊表。

user_id_1, user_id_2, point

首先;

我想,给x点10分友谊。

但是,如果不存在友谊,那么用x点创造新的友谊。

如果友谊存在则将点数更新为x点

我只需要在where子句中使用updateOrCreate函数。当然,如果支持多次插入,例如model :: insert方法。

有人可以帮帮我吗?

2 个答案:

答案 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*/
    }