2

DBクエリビルダーを使用してKohana3でクロステーブル更新を構築する適切な方法は何ですか?

現在、私はDB :: exprを使用していますが、クエリビルダーはそれよりも賢いことを知っています。

// update record
$rows_updated = DB::update(DB::expr('user_list_permissions INNER JOIN users ON user_list_permissions.user_id = users.id'))
->set($params)
->where('user_list_permissions.id', '=', $user_list_permission_id)
->where('users.account_id', '=', $this->account_id)
->execute();

もちろん、SELECTクエリを作成するときのように「結合」メソッドを使用しようとしましたが、エラーが発生します。

ErrorException [ 1 ]: Call to undefined method Database_Query_Builder_Update::join()
4

2 に答える 2

2

したがって、結合を行うために式を使用しています。この動作を実現するために、「on」関数で組み込みの「結合」関数を使用することができます。

したがって、あなたの例では次のようになります。

$rows_updated = DB::update('user_list_permissions')
->join('users','INNER')
->on('user_list_permissions.user_id','=','users.id')
->set($params)
->where('user_list_permissions.id', '=', $user_list_permission_id)
->where('users.account_id', '=', $this->account_id)
->execute();

それについてはあまりありませんが、ドキュメントにはhttp://kohanaframework.org/3.2/guide/database/query/builder#joinsに少しあります

于 2012-07-04T07:49:00.807 に答える