Я не знаю, если она была решена, но я нашел то же самое в запросе где Я собирался присоединиться.
Возможно, проблема в том, что у вас есть соединение внутри ролей.
я, не работает:
\BF\Models\RentalBike::active()
->has('sizes')
->whereHas('bike', function ($q) {
$q->active();
})
->whereHas('rental', function ($q) {
$q->active();
})
->with([
'sizes' => function ($q) {
$q->join('sizes', 'size_id', '=', 'sizes.id')
->orderBy('sizes.weight')
->get(['rental_bike_size.id',
'rental_bike_size.size_id',
'rental_bike_size.rental_bike_id',
'sizes.name',
'sizes.weight'
])->each(function($o) {
$o->setAttribute('stock_available', 123);
});
},
'bike' => function ($q) {
$q->get(['id', 'model', 'brand_id']);
},
'bike.brand' => function ($q) {
$q->get(['id', 'name']);
}
])
->get(['id', 'id as rental_bike_id', 'bike_id', 'price_id']);
решаемые с:
return \BF\Models\RentalBike::active()
->has('sizes')
->whereHas('bike', function ($q) {
$q->active();
})
->whereHas('rental', function ($q) {
$q->active();
})
->with([
'sizes' => function ($q) {
$q->join('sizes', 'size_id', '=', 'sizes.id')
->orderBy('sizes.weight')
->get(['rental_bike_size.id',
'rental_bike_size.size_id',
'rental_bike_size.rental_bike_id',
'sizes.name',
'sizes.weight'
]);
},
'bike' => function ($q) {
$q->get(['id', 'model', 'brand_id']);
},
'bike.brand' => function ($q) {
$q->get(['id', 'name']);
}
])
->get(['id', 'id as rental_bike_id', 'bike_id', 'price_id'])
->each(function($o) {
$o->sizes->each(function($o){
$o->setAttribute('stock_available', 'bar');
});
});
Обратите внимание на положение .each().
Вы когда-нибудь это понимали? Сверху моей головы выглядит, что коллекция $ role пуста или вам нужно вызвать '$ role-> save();' в пределах закрытия. –