Skip to content

Latest commit

 

History

History
109 lines (86 loc) · 2.28 KB

01_create.md

File metadata and controls

109 lines (86 loc) · 2.28 KB

create

情境

資料庫

Model

namespace M;

class User extends Model {}

普通新增

新增成功則回傳該 Model 物件,失敗則回傳 null

$user = \M\User::create([
  'name' => 'OA',
  'age' => 18,
]);

if ($user) {
  echo $user->id; // 1
  echo $user->name; // OA
  echo $user->age; // 18
} else {
  var_dump($user); // null
}

多筆新增

全部皆新增成功則回傳 數量,只要有一筆失敗則回傳 null,下面例子雖然新增了兩筆資料,但其實只下了一次 Query

$datas = [];
array_push($datas, [
  'name' => 'OA'
  'age' => 18,
]);
array_push($datas, [
  'name' => 'OB'
  'age' => 28,
]);

$count = \M\User::creates($datas);
echo $count ? '成功新增' . $count . '筆資料' : '新增失敗';

如果資料太多,想要分批新增,可以在第二參數決定多少筆數為一批,下列範例是以每 10筆為一批去執行,以下面例子共有 26 筆資料,若採用 10筆分批,則會 下 3 次 Query 成功即回傳 筆數,失敗則 null

$datas = [
  ['name' => 'OA', 'age' => 18],
  ['name' => 'OB', 'age' => 28],
  // ... N 筆資料
  ['name' => 'OY', 'age' => 31],
  ['name' => 'OZ', 'age' => 26],
];

$count = \M\User::creates($datas, 10);
echo $count !== null ? '成功新增' . $count . '筆資料' : '新增失敗';

新增之後

此功能只給 普通新增 使用!

如果每次新增一筆 User 資料時,都需要在 name 欄位加入 'Suffix_' 字串,那就可以在 afterCreates 內指定一個新增完後需要做的 method,如果 afterCreates 中若有一個回傳不是為 true,那此次新增就會是失敗的,該 create 即回傳 false

通常這類功能可以用在 計數 功能的欄位上。

// 定義 Model
class User extends Model {
  static $afterCreates = ['addSuffix'];

  public function addSuffix() {
    $this->name = 'Suffix_';
    $this->save();
    return true;
  }
}

// 新增一筆
$user = \M\User::create([
  'name' => 'OA',
  'age' => 18
]);

if ($user) { // 新增成功
	echo $user->name; // Suffix_OA
}