@volodyalesha86

Как в отношениях получить значение одной колонки без массива?

Всем привет!

Как в отношениях получить значение одной колонки без массива?

При запросе использует отношение:
MyModel::with('users:email')->get();
В итоге получаю список данных такого формата:
array:1 [▼ 
  0 => array:5 [▼
    "id" => 1
    "user_id" => "222"
    "mymodel" => "success"
    "created_at" => "2023-07-26T15:48:44.000000Z"
    "updated_at" => "2023-07-26T15:48:44.000000Z"
    "users" => array:1 [▼
      0 => array:1 [▼
        "email" => "e@test.com"
      ]
    ]
  ]
]


Как можно через отношения получить данные подобного формата, без массива в users:
array:1 [▼ 
  0 => array:5 [▼
    "id" => 1
    "user_id" => "222"
    "mymodel" => "success"
    "created_at" => "2023-07-26T15:48:44.000000Z"
    "updated_at" => "2023-07-26T15:48:44.000000Z"
    "users" => e@test.com"
    ]
  ]
]
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
i229194964
@i229194964
Веб разработчик
$result = MyModel::with('users:email')->get()->map(function ($item) {
    $item['users'] = $item['users'][0]['email'];
    return $item;
});

array:1 [▼
  0 => array:5 [▼
    "id" => 1
    "user_id" => "222"
    "mymodel" => "success"
    "created_at" => "2023-07-26T15:48:44.000000Z"
    "updated_at" => "2023-07-26T15:48:44.000000Z"
    "users" => "e@test.com"
  ]
]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
iMedved2009
@iMedved2009
Не люблю людей
public function scopeAppendEmail(Builder $builder){
      $builder->select(DB::raw('mymodel_table.*, (select email from users where user_id = users.id limit 1) as user_email'));
}

MyModel::appendEmail()->get();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы