возвращаю данные для отдыха апи и я хотел бы вернуть оба приписывает соответствующие атрибутыПередача соответствующих атрибутов в yii2 к выходу JSon
Это то, что я есть
$query = User::find()->joinWith('role');
Когда я выполнять
var_dump($query->all())
Я получаю массив вида (атрибуты и связанные с ними атрибуты)
[1]=>
object(common\models\User)#119 (10) {
["_attributes":"yii\db\BaseActiveRecord":private]=>
array(18) {
["id"]=>
int(27)
["username"]=>
string(8) "marshal2"
["email"]=>
string(18) "[email protected]"
}
["_related":"yii\db\BaseActiveRecord":private]=>
array(1) {
["role"]=>
object(common\rbac\models\Role)#131 (8) {
["_attributes":"yii\db\BaseActiveRecord":private]=>
array(3) {
["item_name"]=>
string(23) "Tracking center officer"
["user_id"]=>
int(27)
}
}
}
} ...
При прохождении результат на выходе JSon через
return ['data' => $query->all()];
только атрибуты передаются, но связанный с ним не прошли То есть я получаю
"data": [
{
"username": "admin",
"email": "[email protected]",
},
{
//also id
"username": "marshal1",
"email": "[email protected]",
..... and others
//i expected to see a role name since there is a related attribute with user id
},
Что мне нужно добавить, чтобы соответствующие атрибуты также передавались , так как я ожидаю, что данные также будут отображать название ролики
Это моя модель пользователя
public $role;
public function rules()
{
return [
[['username', 'email'], 'filter', 'filter' => 'trim'],
[['username','expires_on', 'email', 'status'], 'required'],
['email', 'email'],
// ['expires_on', 'integer'],
[['username','first_name','last_name','firebase_pwd','picture'], 'string', 'min' => 2, 'max' => 255],
// password field is required on 'create' scenario
['password', 'required', 'on' => 'create'],
// use passwordStrengthRule() method to determine password strength
$this->passwordStrengthRule(),
['username', 'unique', 'message' => 'This username has already been taken.'],
['email', 'unique', 'message' => 'This email address has already been taken.'],
];
}
public function fields()
{
$fields = parent::fields();
// remove fields that contain sensitive information
unset($fields['auth_key'], $fields['password_hash'],
$fields['password_reset_token'],
$fields['created_at'],
$fields['firebase_pwd'],
$fields['updated_at'],
$fields['id'],
$fields['authtoken'],
$fields['account_activation_token']
);
$fields['role'] =function ($model){ //added this to see if it'll work
return $model->role->name;
};
return $fields;
}
Отношения еще в модели пользователя
public function getRole()
{
// User has_one Role via Role.user_id -> id
return $this->hasOne(Role::className(), ['user_id' => 'id']);
}
enter code here
ли какие-либо из этих работ для вас? http://stackoverflow.com/questions/30363574/how-to-display-relation-data-into-json-format-from-two-table-in-yii2-restful-api – Ripper
Нет роли еще не отображается –
Ive обновил вопрос с помощью части поля, но все еще не удалось –