LoginSignup
0
0

More than 5 years have passed since last update.

【FuelPHP】Query Builderでフィールド上書き(UPDATE)

Last updated at Posted at 2017-10-03

例えば、下記のようなテーブルがあるとする。

CREATE TABLE `sample` (
  `sample_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `delete_flag` bigint(20) unsigned NOT NULL DEFAULT '0',
  `sample1` int(10) unsigned DEFAULT NULL,
  `sample2` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`sample_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

delete_flagsample_id を代入して上書きしたい。
発行したいSQLは以下の通り

UPDATE sample SET delete_flag = sample_id, sample1 = 1 WHERE sample2 = 2;

以下のようにして書くと、上記と同じようなSQLが発行できた。

// 上書き用変数作成
$update_set['sample1'] = 1;
$update_set['delete_flag'] = DB::expr('sample_id');

// SQL 実行
DB::update('sample')->set($update_set)->where('sample2', '=
', 2)->execute();       

DB::expr 関数をしようせずに実行すると誤ったSQLが発行される。

// 上書き用変数作成
$update_set['sample1'] = 1;
// ↓この状態だと、delete_flag に sample_id という文字列を入れてしまう。
$update_set['delete_flag'] = 'sample_id';

// SQL 実行
DB::update('sample')->set($update_set)->where('sample2', '=
', 2)->execute();       

【参考】FuelPHP公式

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0