В Laravel 6, когда я читаю данные из таблицы объявлений, я использую :: with (чтобы получить относительные данные из таблицы ad_report_abuses (содержит поля id, ad_id, user_id, text), например "
$ads = Ad
::with('adReportAbuses')->
getByTitle($this->filter_title)
->getByStatus('A')
->leftJoin('users', 'users.id', '=', 'ads.creator_id')
->orderBy($order_by, $order_direction)
->select(
'ads.*',
'users.name as creator_username',
'users.email as creator_email',
'users.phone as creator_phone'
)
->offset($limit_start)
->take($ads_per_page)
->distinct()
->paginate($ads_per_page);
Который я выбираю с помощью ресурса:
class AdResource extends JsonResource
{
public static $wrap = 'ads';
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
...
'adReportAbuses' => AdReportAbuse::collection($this->whenLoaded('adReportAbuses')),
...
'created_at' => $this->created_at,
];
}
В приложении / Ad. php модель у меня есть:
public function adReportAbuses()
{
return $this->hasMany('App\AdReportAbuse', 'ad_id', 'id');
}
, и она работает нормально, а в подмассиве adReportAbuses у меня есть поля:
[0] => ad_id
[1] => user_id
[2] => text
, но мне также нужно в запросе adReportAbuses получить поле user_name для связанного adReportAbuses.user_id, и это другое отношение, которое я имею в основном запросе ad.user_id ... Могу ли я?
Спасибо !