Laravel 5replicate() 处理具有唯一属性的列

dmS*_*azi 4 mysql unique laravel eloquent laravel-5

我正在使用 Laravel 的replicate()模型方法来生成现有实例的副本。如果没有要添加的列,它就可以正常工作unique

就我而言,有一些列是唯一的,所以我使用这个

    $pr = Products::find(\Input::get('id'))->replicate();
    $pr['product_code'] = $pr->product_code . '_'.$pr['id'];
    $pr['name'] = $pr->name . '_'.$pr['id'];
    $pr->save();
Run Code Online (Sandbox Code Playgroud)

这将确保如果产品被复制一次,它将处理唯一的列问题。但如果再次复制该产品,就会再次出现问题。

我该如何解决这个问题

Mar*_*łek 6

我将在数据库中设置product_codename可空值,然后执行如下操作:

$product = Products::find(\Input::get('id'));
$newProduct = $product->replicate(['product_code', 'name']);
$newProduct->save();
$newProduct->product_code = $product->product_code.'_'.$newProduct->id;
$newProduct->name = $product->name.'_'.$newProduct->id;
$newProduct->save();
Run Code Online (Sandbox Code Playgroud)

当然,如果您在多个地方执行此操作,您可以将其包装到一个函数中。