DB::table('New_Themes')
->where('id', $id)
->decrement('upVotes', 1);
DB::table('New_Themes')
->where('id', $id)
->increment('downVotes', 1);
...
我有更新查询,因此我至少有4个(在哪里和增量内容)这是重复的,并且需要时间来搜索on。
我的问题:有这样的快捷方式
DB::table('New_Themes')
->where('id', $id)
->decrement('upVotes', 1);
->increment('downVotes', 1);
但它不起作用,任何想法如何使其更简单?
第二个问题:如何在Laravel中使用firstOrCreate方法,我需要此功能才能使我的代码更容易。但我不知道如何将其与模型,控制器集成。
Ex. $flight = App\Flight::firstOrCreate(['name' => 'Flight 10']); (from documentation)
什么样的变量是$ flight,boolean或......?,任何解释都对我很有帮助,因为laravel文档缺少详细信息。
答案 0 :(得分:1)
function downVote($id)
{
DB::table('New_Themes')
->where('id', $id)
->decrement('upVotes', 1)
->increment('downVotes', 1);
}
如果你不止一次使用它,你就不必输入它。
$ flight是模型Flight的一个实例,您应该学习如何使用模型,这将使您在处理数据时更加轻松,并充分利用MVC架构,Laravels文档对此有很好的记录。
答案 1 :(得分:1)
/**
* Get the first record matching the attributes or create it.
*
* @param array $attributes
* @return static
*/
public static function firstOrCreate(array $attributes)
{
if ( ! is_null($instance = static::where($attributes)->first()))
{
return $instance;
}
return static::create($attributes);
}
您可以看到文件vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php