Laravel,更新查询和FirstorCreate方法

时间:2016-07-20 11:15:36

标签: php laravel

   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文档缺少详细信息。

2 个答案:

答案 0 :(得分:1)

1

function downVote($id)
{
      DB::table('New_Themes')
          ->where('id', $id)
          ->decrement('upVotes', 1)
          ->increment('downVotes', 1);
}

如果你不止一次使用它,你就不必输入它。

2

$ 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