laravel 5中的save(),create()函数有什么不同

时间:2016-08-09 06:05:41

标签: laravel laravel-5 laravel-5.2

我需要知道laravel 5中create()save()函数的区别。 我们可以在哪里使用create()Option Explicit Sub main() Dim area As Range Dim strng As String Dim iRow As Long, startRow As Long, endRow As Long, iCol As Long With Worksheets("Export") '<--| change "Export" with your actual sheet name With .Range("A2:A" & .UsedRange.Rows(.UsedRange.Rows.Count).row).SpecialCells(xlCellTypeBlanks) For Each area In .Areas strng = "" startRow = area.End(xlUp).row endRow = area.Rows(area.Rows.Count).row iCol = area.End(xlToRight).Column For iRow = startRow To endRow strng = strng & .Parent.Cells(iRow, iCol) & " " Next iRow .Parent.Cells(startRow, iCol) = strng Next area .EntireRow.Delete End With End With End Sub

2 个答案:

答案 0 :(得分:23)

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方法中,您传递数组,设置属性 模型并一次性保存在数据库中。
  • create()接受普通 PHP数组

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

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

    class Country扩展Model {

    protected $fillable = [
        'name',
        'area',
        'language',
        ];
    

    }

答案 1 :(得分:0)

如果您要寻找简短的答案,请在laravel文档中找到

The Create Method

除了savesaveMany方法之外,您还可以使用 create方法,该方法接受属性数组,创建模型并将其插入到数据库。

同样,savecreate之间的差异

save接受完整的Eloquent模型实例

create接受纯PHP数组

$post = App\Post::find(1);

$comment = $post->comments()->create([
    'message' => 'A new comment.',
]);

如果您要查找详细信息,请参阅@Tony Vincent的答案。