LoginSignup
38
38

More than 5 years have passed since last update.

FuelPHPのDB基本と返り値

Last updated at Posted at 2016-02-12

仕事で、FuelPHPを触ったのでメモ。

DBの使い方は、公式に記載されている(日本語: Ver1.8版)
http://fuelphp.jp/docs/1.8/classes/database/usage.html

もっと詳しい使い方は、こちらの方のブログが丁寧にまとめられている
マコトのおもちゃ箱

SELECT

SELECT
$result = DB::select('col1', 'col2')->from('table_name')->where('id', 1)->execute();

返り値: FuelのDatabase_Query オブジェクト

配列で取得

controller内で加工したいときはas_array()で配列に変換してしまうと便利。
カラム名をkeyとしてデータが格納される。

配列で取得
$result = DB::select('col1', 'col2')->from('table_name')->execute()->as_array();

var_dump($result);
/*array(3) {
  [0]=>
  array(11) {
    ["col1"]=>
    string(1) "hoge"
    ["col2"]=>
    string(19) "fuga"
  }
  [1]=>...
}*/
JOINと別名

JOINは、join()->on()
ONが複数あるときは、and_on()を使う。

別名は、カラム名の代わりarray('カラム名', '別名')と記述する

JOINと別名
$result = 
DB::select('table_name.col1', array('table_name2.col1', 'as_name')
   -> from('table_name')
   -> join('table_name2', 'LEFT')->on('table_name.id', '=', 'table_name2.id')
   -> join(array('table_name3', 'table3'),'LEFT')
   -> on('table_name.id', '=', 'table3.id')->and_on('table_name.col3', '=', 'table3.col3')
   ->where('table_name.del_flg', '0')
   ->execute()->as_array();

var_dump($result);
/*array(3) {
  [0]=>
  array(11) {
    ["col1"]=>
    string(1) "hoge"
    ["as_name"]=>
    string(19) "fuga"
  }
  [1]=>...
}*/

INSERT

INSERT
$result = DB::insert('table_name')->set(array(
    'col1' => 'hoge',
    'col2' => 'fuga',
) )->execute();

if($result[1] > 0){ //成功 }

返り値: 配列
1つ挿入した場合の返り値は、
[int: InsertしたレコードのPrimaryKey, int: Insertされたレコード数]

UPDATE

UPDATE
$result = DB::update('table_name')->value('col1', 'hoge')->where('id', 1)->execute();

if($result > 0){ //成功 }

返り値: 数値
UPDATEされたレコード数を返す。

DELETE

DELETE
$result = DB::delete('table_name')->where('id', 1)->execute();

if($result > 0){ //成功 }

返り値: 数値
DELETEされたレコード数を返す。

38
38
0

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
38
38