挿入

Posted by muchag | CakePHP 3.x | 2018-01-08 (月) 16:22:17


公式:データの保存

【環境】
CakePHP: 3.5.8
php: 7.1.5
基本

use Cake\ORM\TableRegistry;

$articlesTable = TableRegistry::get('MyVendor/MyPlugin.Articles');
$article = $articlesTable->newEntity();

$article->title = '新しい記事';
$article->body = 'これは記事の本文です';

if ($articlesTable->save($article)) {
    // $article エンティティーは今や id を持っています
    $id = $article->id;
}
バルクインサート

これすごい!!!
メッチャ楽~♪


$users = array(
	0 => array(
	  'name' => 'Santa',
	  'age' => 25,
	  'created' => '2017-12-24 20:52:00',
	  'modified' => '2017-12-24 20:52:00',
	),
	1 => array(
	  'name' => 'Claus',
	  'age' => 52,
	  'created' => '2017-12-24 20:52:00',
	  'modified' => '2017-12-24 20:52:00',
	),
);

$fields = [
	'name',
	'age',
	'created',
	'modified',
];

$table = TableRegistry::get('Users');

$query = $table->query()
	->insert($fields);

$values_expression = $query->clause('values')->values($data);

$query = $query
	->values($values_expression)
	->execute();

ただし、28行目は、注意。

ただしclause()はqueryを返すものじゃないので、続けて書けないのでそこは注意
なので、最初の例のように一旦切ってくださいな

杏z 学習帳:[CakePHP]QueryBuilderを使ってバルクインサート(2016-03-16)

だそうなので、その通りにしたけど
->insert() より前にしたら、エラーになった。

つまり、->insert() で設定したカラムに対して
値をまとめてセットして、クエリを実行する
という流れなのね~。

ON DUPLICATE KEY UPDATE

epilog メソッドを用いて、更新対象カラムを指定。


$query->epilog('ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `modified`=VALUES(`modified`)');
参考サイト

杏z 学習帳:[CakePHP]QueryBuilderを使ってバルクインサート(2016-03-16)

Advanceffort WEB戦略会議室!:CakePHP3 クエリ作成パターンまとめ(find)(2016-02-14)

Qiita:CakePHP 3のQueryBuilderの使い方をまとめてみた!(2014-12-12)

CakePHP 3.x | 2018-01-08 (月) 16:22:17 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment