【问题标题】:What is different between save(), create() function in laravel 5laravel 5 中的 save()、create() 函数有什么不同
【发布时间】:2019-11-30 15:43:12
【问题描述】:

我需要知道 laravel 5 中 save()create() 函数有什么区别。 我们可以在哪里使用save()create()

【问题讨论】:

    标签: laravel laravel-5 laravel-5.2


    【解决方案1】:

    Model::create$model = new MyModel(); $model->save() 的简单包装器 查看实现

    /**
     * Save a new model and return the instance.
     *
     * @param  array  $attributes
     * @return static
     */
    public static function create(array $attributes = [])
    {
        $model = new static($attributes);
    
        $model->save();
    
        return $model;
    }
    

    保存()

    • save() 方法用于保存新模型和更新 现有的。在这里您正在创建新模型或查找现有模型, 一一设置属性,最后保存到数据库中。

    • save() 接受一个完整的 Eloquent 模型实例

      $comment = new App\Comment(['message' => 'A new comment.']);
      
      $post = App\Post::find(1);
      
      $post->comments()->save($comment);
      


    创建()

    • 在创建方法时,您正在传递一个数组,在其中设置属性 模型并一次性保存在数据库中。
    • create() 接受一个普通的 PHP数组

      $post = App\Post::find(1);
      
      $comment = $post->comments()->create([
          'message' => 'A new comment.',
      ]);
      

      编辑
      正如@PawelMysior 指出的那样,在使用 create 方法之前,请务必标记其值可以通过批量赋值安全设置的列(例如 name、birth_date 等),我们需要通过提供一个更新我们的 Eloquent 模型名为 $fillable 的新属性。这只是一个数组,其中包含可以通过批量赋值安全设置的属性名称:

    例子:-

    class Country extends Model {
    
        protected $fillable = [
            'name',
            'area',
            'language',
            ];
    }
    

    【讨论】:

    • 感谢您的回复,但能否请您再详细说明一下。我浏览了 Laravel 文档,但没有从那里得到太多想法。
    • 这里要注意一件重要的事情:如果您打算使用create(),您传递给它的所有属性都必须列在模型的$fillable 属性中。见:laravel.com/docs/master/eloquent#mass-assignment
    • @PawelMysior 所以create()save() 更安全?
    • @YousefAltaf 我可以说两者都是安全的,但 create() 更灵活
    猜你喜欢
    • 2015-07-12
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2017-10-22
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多