У меня есть пользователи, которые могут быть связаны с items
несколькими факторами, и я хочу создать аксессор getItemDatesAttribute
, который получает все элементы, относящиеся к пользователям, и получает даты этих элементов.В этом сценарии нет прямой связи между пользователем и датами.Я могу получить соответствующие предметы:
/**
* Accessor to get a user's relevant item dates
*
* @return mixed
*/
public function getItemDatesAttribute()
{
$itemDates = Item::where('assigned_user_id', $this->id)
->orWhereIn('assigned_team_id', $this->teams->pluck('id'))
->with('dates')
->get();
dd($itemDates); // All the bugs with their dates if they have them...
$itemDates->filter(function ($item) {
// Not sure how to return just the dates
});
}
Тогда я не совсем уверен, как вернуть все даты для всех соответствующих ошибок.Модель Item
имеет отношение:
public function dates()
{
return $this->hasMany(ItemDate::class, 'item_id', 'id');
}
Конечный результат должен представлять собой набор дат, которые с помощью нескольких вышеупомянутых факторов (и любых других необходимых) будут связаны с пользователем.Я знаю, что могу достичь этого с помощью некоторых вложенных foreach'ов, но мне было интересно, есть ли лучший способ laravel:
$items = Item::all();
foreach ($items as $item) {
if ($item->isRelative && !empty($item->dates)) {
foreach ($item->dates as $item) {
$dates[] = $date;
}
}
}
return $dates;
isRelative - это аксессор для Item, который делает то же самое, что и мой where / whereInделать в первом запросе.