ilaiyaraja
(Ilaiyamdu)
1
My table:
user is Master table
class_detail , userinfo are child tables with foreign key of user table.
I am trying to return JSON data from my REST. so i am using extraFields().
$user = ClassDetail::findOne($id);
// user in second parameter array is extarfields
$data['USER'] = $user->toArray([],['user]);
Its working.
But, i trying to return user info details also,i cant find a solution
$user = ClassDetail::findOne($id);
$data['USER'] = $user->toArray([],['user', 'user.userinfo']);
Below code is working , but i need to return like above statement, thats only match my requirements
My requirement of loading data in table like : Child->Parent->Child
$user = User::findOne($id);
$data['USER'] = $user->toArray([],['classDetail', 'userinfo']);
soul
(Soulgadn)
2
Try something like this
$user = ClassDetail::findOne($id);
$list = yii\helpers\ArrayHelper::getValue($user->classDetail, function ($classDetail) {
return $classDetail->userinfo;
});
ilaiyaraja
(Ilaiyamdu)
3
Thanks , But i need it in single array .so i modify to fields.
public function fields(){
$fields['classDetail'] = function($this){
if($user->classDetail){
return $classDetail->userinfo;
}
return null.
};
}
mathis
4
Since I hit this topic searching for same, here is the solution.
The second param defines which “attributes” shall be expanded.
So like this:
$user = ClassDetail::findOne($id);
$data['USER'] = $user->toArray([],['user.userinfo', 'user']);