php - 如何一次更新具有相同值的多行和数据库?拉维

标签 php forms sql-update laravel 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 编辑 products 表中的 *product_name* 和 product_code。 但是我正在尝试使用将用作 id 的相同 product_code 更新数据库中的多行。

//我在 Google 图片 上找到了一张很好的图片,它解释了我正在尝试使用 Laravel 做的事情:

IMAGE LINK

有解决办法吗?提前致谢!

最佳答案

假设您使用的是 MySQL:让数据库的 外键 为您执行此操作,使用 ON UPDATE CASCADE命令。如果您更改基本 products 表中的 product_code,这将更新所有引用的表。

products_ing 的创建脚本

...
product_code INT NOT NULL REFERENCES products(product_code) ON UPDATE CASCADE
...

作为 laravel 迁移

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');
});

关于php - 如何一次更新具有相同值的多行和数据库?拉维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688533/

相关文章:

php - 返回 LastInsertID 时 PDO 事务回滚

php - guzzle NULL响应lumen php oauth2

python - DjangoForeignKey中的表单控件

java - 从 Java 中创建 SQL 批量更新

php - 复选框、表单提交以及如何在循环中正确使用 array_fill?

javascript - 处理表单元素值的函数

javascript - Angular : Directive: How to pass require form AND controller to link function

SQL更新与连接

mysql - 如果单元格上存在字符串 MySQL 则更新单元格内容

php - wordpress 数据库中的事务