PHP完全自学手册(珍藏版) 中文pdf扫描版下载
Yii2 的查询结果是被缓存
public function actionIndex()
{
// 关联查询结果默认被缓存 默认下次查询不会去查数据库
$user = User::find()->where(['name'=>'zhangsan'])->one();
$orders = $user->orders; // select * from order where user_id = user.id;
// 手动清楚缓存
unset($user->orders);
// 重新查询
$orders2 = $user->orders; // select * from order where user_id = user.id;
}
关联查询的多次查询
public function actionIndex()
{
// 关联查询的多次查询
// 方法一:一般方式(如果有100个用户 会执行101次查询)
$users = User::find()->all(); // select * from user
foreach($users as $user){
$oders = $user->orders; // select * from order where user_id = user.id;
}
// 方法二、 Yii2 提供的高效能方式(只会执行2次数据库查询)
$users = User::find()->with('orders')->all();
// select * from user
// select * from order where user_id in(...);
foreach($users as $user){
$oders = $user->orders; // 此处不会执行数据库查询
}
}
转载请注明:谷谷点程序 » Yii2 数据模型之关联查询性能问题