1

我有一张桌子,我正在尝试使用该save()方法来更新/创建行。问题是它总是创建新行。以下代码每次运行时都会给我大约 12 行代码。id在插入它们之前它们没有唯一性,但name和的组合DateTimeCode是唯一的。有没有办法使用这两个来让 laravel 识别它们exist()?我应该考虑使用if existwith createandupdate代替吗?

foreach ($x as $y) {
    $model = new Model;
    $model->name = ''.$name[$x];
    $model->DateTimeCode = ''.$DateTimeCode[$x];
    $model->value = ''.$value[$x];
    $model->someothervalue = ''.$someothervalue[$x];
    $model->save();
};
4

2 回答 2

5

我认为这将在 laravel 4.x 中工作:

 foreach ($x as $y) {
    $model = Model::firstOrCreate(array('name' => name[$x], 'DateTimeCode' => DateTimeCode[$x]));
    $model->value = ''.$value[$x];
    $model->someothervalue = ''.$someothervalue[$x];
    $model->save();
};
于 2014-05-06T21:31:48.697 回答
4

我认为在这种情况下,您需要在更新或创建之前搜索它:

foreach ($x as $y) {
    $model = Model::where('name', name[$x])->where('DateTimeCode', DateTimeCode[$x])->first();

    if( ! $model)
    {
        $model = new Model;
        $model->name = ''.name[$x];
        $model->DateTimeCode = ''.DateTimeCode[$x];
    }

    $model->value = ''.$value[$x];
    $model->someothervalue = ''.$someothervalue[$x];
    $model->save();
};
于 2013-10-30T14:27:51.377 回答