如何在单行mysql laravel中搜索多个数据

时间:2017-03-08 21:58:35

标签: mysql laravel laravel-5.2 laravel-5.3 laravel-5.4

我想检查同一行中的3列值。我的专栏是

|column1|  column2 |column3 |
|-------|----------|--------|
| row1  |   row2   |  row3  |

我想检查row1是否有值,如果没有,那么我想插入其中,如果没有值,则与row2相同,我想插入其中,与第3行相同。目标是当用户注册时,我们会向他们赠送3份礼物。所以当你注册row1,row2和row3为null时,我想根据数据库中的ASCENDING ORDER插入它们。

例如:如果row1为空,则它应该将其从空状态更新为玩具或气球,然后再将其他两行更新,但如果第二行有值,那么它应该转到第三行,如果第三个有一个值然后它应该到下一行

1 个答案:

答案 0 :(得分:0)

在行和列之间使用它们的方式有点混乱。

首先,请按照您提供的表格和标题进行操作。您想要更新包含3列的单行。假设所述行还有一个主键,如id,您可以

$gift = Gift::find($id);
$gift->column1 = $row->column1 ? $row->column1 : $toy; //if empty, add toy
$gift->column2 = $row->column2 ? $row->column2 : $baloon; //if empty, add baloon
$gift->save();

第二种情况,您实际上正确定义了这个并将每个礼物放在不同的行中,并在礼物和用户之间创建一对多的关系。在用户模型中:

public function gifts() {
    return $this->hasMany(Gift::class, 'user_id');
}

当用户注册时,他还没有礼物。你实际上一个接一个地拿着礼物而没有所有的小屋。

$user = Auth::user();
$user->gifts()->saveMany([
    new Gift(['type' => 'toy', ...]); //fill all the attributes
    new Gift(['type' => 'toy', ...]); //fill all the attributes
    new Gift(['type' => 'toy', ...]); //fill all the attributes
]);

瞧!