gpt4 book ai didi

Yii2 获取关系模型的具体属性

转载 作者:行者123 更新时间:2023-12-01 10:42:24 24 4
gpt4 key购买 nike

我有 2 个模型 Onlinelearning 和 Onlinelearningreviews,它们之间有很多关系。我想获得 Onlinelearningreviews 模型的特定属性。

在线学习属性:ID, Title, URL, Description, GradeAge
Onlinelearningreviews 属性:ID, OnlinelearningID, Rating, Comments
模型在线学习:

public function getOnlinelearningreviews()
{
return $this->hasMany(Onlinelearningreviews::className(), ['OnlineLearningID' => 'ID']);
}

模型在线学习评论:
 public function getOnlineLearning()
{
return $this->hasOne(Onlinelearning::className(), ['ID' => 'OnlineLearningID']);
}

我要得到 Title, URL, Description, GradeAge and Rating属性。

以下作品:
Onlinelearning::find()->select(['Title','URL','Description','GradeAge'])->with('onlinelearningreviews')->asArray()->all();

但是当我指定评级时,它给了我错误
Onlinelearning::find()->select(['Title','URL','Description','GradeAge','onlinelearningreviews.Rating'])->with('onlinelearningreviews')->asArray()->all();

如何获得只有 评分 来自 Onlinelearningreviews 模型的属性?我不想要其他属性。
Onlinelearning::find()->with(['onlinelearningreviews'])->asArray()->all()打印:
 Array
(
[0] => Array
(
[ID] => 1
[Title] => Udemy
[URL] => http://www.google.com
[Description] => Lorem Ipsum is simply dummy text of the printing and typesetting industry.
[GradeAge] => 2nd to 5th Grade
[AddedOn] => 2015-03-20 00:00:00
[LastModifiedOn] => 2015-03-20 00:00:00
[onlinelearningreviews] => Array
(
[0] => Array
(
[ID] => 1
[ParentID] => 1
[OnlineLearningID] => 1
[Rating] => 3.5
[PositiveComments] => It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. .
[NegativeComments] =>
[AddedOn] =>
[LastModifiedOn] =>
)

[1] => Array
(
[ID] => 2
[ParentID] => 1
[OnlineLearningID] => 1
[Rating] => 3.5
[PositiveComments] => It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.
[NegativeComments] =>
[AddedOn] =>
[LastModifiedOn] =>
)

)

)
)


Onlinelearning::find()
->select(['Title','URL','Description','GradeAge'])
->with([
'onlinelearningreviews' => function ($query) {
/* @var $query yii\db\ActiveQuery */

$query->select('Rating');
},
])
->asArray()
->all();

打印:
Array
(
[0] => Array
(
[Title] => Udemy
[URL] => http://www.google.com
[Description] => Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
[GradeAge] => 2nd to 5th Grade
[onlinelearningreviews] => Array
(
)

)
)

最佳答案

有可能是这样:

Onlinelearning::find()
->select(['Title','URL','Description','GradeAge'])
->with([
'onlinelearningreviews' => function ($query) {
/* @var $query \yii\db\ActiveQuery */

$query->select('Rating');
},
])
->asArray()
->all();

official docs关于如何在 with() 中自定义关系查询.

如果您想从 Onlinelearning 中选择所有属性型号可以省略 select部分:
->select(['Title','URL','Description','GradeAge'])

更新:

似乎您应该在两个模型中都包含连接属性:
->select(['ID', 'Title','URL','Description','GradeAge'])


$query->select(['OnlinelearningID', 'Rating']);

否则有关 Undefinex index 的异常将被抛出。

关于Yii2 获取关系模型的具体属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29164934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com