gpt4 book ai didi

mysql - Laravel - 通过定义的属性创建或更新

转载 作者:行者123 更新时间:2023-11-29 22:52:10 25 4
gpt4 key购买 nike

我有这个表:

--Votes--
id: Integer
post_id: Integer
user_id: Integer
positive: Boolean

现在我只想在记录不存在时创建它。它一直有效,直到有人在点击“喜欢”后想要点击“不喜欢”(在另一侧完全相同)。

例如,有人喜欢某个帖子,将使用 positive=true 创建记录。现在,如果用户单击同一篇文章,但这次不喜欢,它将创建另一条记录,但我希望它只更新现有记录。

有简单的解决办法吗?
这是我创建记录的代码:

            $vote = Vote::firstOrCreate(array(
'post_id' => $request->input('post_id'),
'user_id' => Auth::user()->id,
'positive' => $request->input('positive')
));

注意:如果有人知道如何做到这一点,也许他可以向我展示如何删除。例如,有人点击了两次。应创建并删除该记录。

最佳答案

您可以使用updateOrCreate方法:

public static function updateOrCreate(array $attributes, array $values = array())
{
$instance = static::firstOrNew($attributes);

$instance->fill($values)->save();

return $instance;
}

看看:https://github.com/laravel/framework/blob/5.0/src/Illuminate/Database/Eloquent/Model.php#L605

编辑:
示例

$attributes = [
'name' => 'Christian',
'email' => 'christian@example.com'
];

$values = [
'name' => 'Christian',
'email' => 'christian@example.com',
'phone' => '123456789'
];

MyModel::updateOrCreate($attributes, $values);

在上面的示例中,我将搜索我的表中是否有一个与 nameemail 匹配的条目,如果存在,我将更新记录,否则我将插入带有 $values 信息的新条目

关于mysql - Laravel - 通过定义的属性创建或更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28857567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com