一.用模型靜態方法:update([更新數組],[更新條件])
1.更新條件用數組給出
public function test()
{
//$res = $this->data->getMenu();
//獲取模型對象
$model = new Data();
$res = Data::update([
'node_name' => 'hahahaa',
'typeid' => 44,
], ['id' => 11]);
dump($res);
}
2.更新函數用閉包函數給出
public function test()
{
//$res = $this->data->getMenu();
//獲取模型對象
$model = new Data();
$res = Data::update([
'node_name' => 'ge',
], function ($query) {
$query->where([
'id' => ['>', 11],
'typeid' => ['BETWEEN', [13, 20]],
]);
});
dump($res);
}
閉包函數通常只用來生成復雜的查詢條件,參數只有一個,$query就是查詢類實例對象
二.用模型直接調用Db類方法
三.模型的save()方法:
能將模型中的數據寫入到表的對應字段中,所以用save()方法更新表中數據,第一步就是獲取表中需要更新的數據,即初始化當前數據模型
1.用模型中的數組去更新字段
public function test()
{
//$res = $this->data->getMenu();
//獲取更新數據,初始化模型對象,讀取主鍵
$data = Data::get(11);
//更新數據模型
$data->node_name = '李達康';
$data->typeid = 4;
//將模型數據寫入對應的字段中
$res = $data->save();
//等價於
// $res=$data->save([
// 'node_name'=>'李達康',
// 'typeid'=>4
// ]);
//返回受影響的記錄數int(1)
dump($res);
}
//對於復雜的條件,可以用閉包來構造查詢表達式
public function test()
{
//$res = $this->data->getMenu();
$model = new Data();
$res = $model->save([
'node_name' => 'jjjj',
], function ($query) {
$query->where('id', 'GT', 10)
->where('typeid', 'LT', '18');
});
dump($res);
}
三.模型動態調用saveAll(二維關聯數組):同時更新多個記錄
saveAll()只需傳一個參數數組,數組中的每一個元素又是一個與表字段對應的關聯數組
public function test()
{
//$res = $this->data->getMenu();
$model = new Data();
$res = $model->saveAll([
['id' => 1, 'node_name' => '我是一'],
['id' => 2, 'node_name' => '我是二'],
]);
dump($res);
}
