Database yii2使用()查找-它用于什么?
也许这个问题很简单,但我无法理解yii2中的with()是什么,尽管我读了几篇关于它的文章。这意味着什么:Database yii2使用()查找-它用于什么?,database,activerecord,yii2,Database,Activerecord,Yii2,也许这个问题很简单,但我无法理解yii2中的with()是什么,尽管我读了几篇关于它的文章。这意味着什么: $players = PlayersModel::find()->with("countries")->all(); 这是干什么用的?在我的数据库中(表是相关的),它可以用于什么目的: 请向我展示此功能的有用方面:with()with()在中进行了说明 此方法允许在查询中快速加载关系数据 在您的示例中有PlayersModel。我假设还有ClubsModel表示数据库表cl
$players = PlayersModel::find()->with("countries")->all();
这是干什么用的?在我的数据库中(表是相关的),它可以用于什么目的:
请向我展示此功能的有用方面:with()
with()
在中进行了说明
此方法允许在查询中快速加载关系数据
在您的示例中有PlayersModel
。我假设还有ClubsModel
表示数据库表clubs
中的数据
假设这位球员属于其中一家俱乐部。PlayersModel
和ClubsModel
之间应该有定义的关系。如果它是在PlayersModel
中定义的,那么它可能类似于:
public function getClub()
{
return $this->hasOne(ClubsModel::className(), ['id' => 'id_club']);
}
因此,现在有一个名为club
的关系。每次调用$model->club
(其中$model
是PlayersModel
的对象)都会得到相关的ClubsModel
对象
现在-当您寻找特定玩家时:
$player = PlayersModel::find()->where(['id' => $id])->one();
或者(写起来稍微简单一点):
这是一个执行的SQL查询。在下一步中,您希望获得该球员的俱乐部-已经定义了关系,因此您可以调用:
$club = $player->club;
但这会执行另一个SQL查询—它被称为延迟加载
假设你知道你需要球员数据和他的俱乐部数据,你可以使用with()
来获得:
$player = PlayersModel::find()->where(['id' => $id])->with('club')->one();
这是一个SQL查询。现在当你打电话时:
$club = $player->club;
这一次不需要进行第二次查询,因为已经获取了该关系数据-它被称为急切加载
$club = $player->club;