如何一次性更新多行数据并将数据库中的值设为相同的值? Laravel

3

我被卡住了。我成功创建了一个表单,可以将多个行添加到数据库中,但我不知道如何在需要使用product_code作为ID时同时更新它们。

这是表1(产品)的结构:

id | product_name | product_code
1  | Name1        | 101
2  | Name2        | 102
3  | Name3        | 103
4  | Name4        | 104

这是表2(products_ing)的结构:

id | product_code | ing_name  | ing_weight
1  | 101          | INGName1  | 110
2  | 101          | INGName2  | 10
3  | 101          | INGName3  | 54
4  | 101          | INGName4  | 248
这是编辑功能:
    public function post_edit($id = null)
{

    if(Input::get('submit'))
    {
        // ID
        if($id !== null)
        {
            $id = trim(filter_var($id, FILTER_SANITIZE_NUMBER_INT));
        }


        $input = Input::all();

        $validation = Validator::make($input);

        else
        {
            foreach ($input as $key => $value)
            {
                $input[$key] = ($value !== '') ? trim(filter_var($value, FILTER_SANITIZE_STRING)) : null;
            }

            try
            {

                DB::table('products')
                    ->whereIn($id)
                    ->update(array(
            'product_name'          => $items['product_name'],
            'product_code'          => $items['product_code']
                ));


            }

    }

    return $this->get_edit($id);
}

我只能通过id编辑“产品”表中的*product_name*和product_code。但是我正在尝试使用相同的product_code从数据库更新多行记录,它将作为ID使用。我在Google图像上找到了一张很好的图片,解释了我想要用Laravel做的事情: 图片链接。是否有解决方案?谢谢!
1个回答

0
假设您正在使用MySQL:让数据库的“外键”通过ON UPDATE CASCADE命令为您完成此操作。如果您更改基本“products”表中的“product_code”,这将更新所有引用的表。 products_ing的CREATE脚本。
...
product_code INT NOT NULL REFERENCES products(product_code) ON UPDATE CASCADE
...

As laravel migration

Schema::create('products_ing', function($table) {
    $table->increments('id');
    $table->int('product_code');
    $table->string('ing_name');
    $table->int('ing_weight');

    /* All the other key stuff */
    $table
        ->foreign('product_code')
        ->references('product_code')
        ->on('products')
        ->onUpdate('cascade');
});

对于等待我表示歉意。谢谢你。这很好,但不是我所需要的全部。正如你所说“如果您更改基本产品表中的product_code,则会更新所有引用表。” 我没有很好地阐述问题,对此我感到抱歉。我已经更新了更多详细信息的问题。我正在尝试更改具有相同product_code的多行数据,该代码将作为id,现在我只知道使用一个id编辑一列... - Aleksa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接