Результаты Laravel Query удаляются после создания коллекции & amp; ошибка разбивки на страницы?

Этот запрос работает и возвращает результаты, которые я хочу, НО после того, как он был превращен в коллекцию или попытался быть «разбитым на страницы», он вернет пустой результат. Я попробовал разбить простое DB::table('users')->paginate(5)[0] и это работает, так что я думаю, что это не от самого paginate.

Код

$photographers_available =  Photographer::where('is_photographer', '=', '1')
->where(function($q)use($city_id)
{
$q->whereHas('studioAddress', function($q)use($city_id)
{
$q->where('city_id', '=', $city_id);
})
->orWhereHas('user', function($q)use($city_id)  // TK could reduce to 'user.address' I think
{
$q->whereHas('address', function($q)use($city_id)
{
$q->where('city_id', '=', $city_id);
});
});
})
->whereHas('stypesPhotographer', function($q)use($stype)
{
$q->where('shooting_type_id', '=', $stype);
})
->whereHas('availabilities', function ($q) use ($selected_date_time)
{
$q->where('unavailable_start_date', '<', $selected_date_time)
->where('unavailable_end_date', '>', $selected_date_time);
}, '=', 0)
->whereHas('bookings', function($q)use($selected_date_time)
{
$q->where('booking_date', '=', $selected_date_time);
}, '=', 0)
->join('stypes_4_photographer', function($join)use($stype)
{
$join->on('photographer_id', '=', 'photographers.id')
->where('shooting_type_id', '=', $stype);
});
$photobla = $photographers_available->first();
echo '<pre>';print_r($photobla);
// RETURNS RESULTS CORRECTLY
$photoTEST = $photographers_available->get();
echo '<pre>';print_r($photoTEST);die();
// RETURNS $photoTEST as NULL.....
// WHY has $photographers_available BEEN EMPTIED?????

Результаты

// $photobla result
Photographer Object
(
[fillable:protected] => Array
(
[0] => id
[1] => is_photographer
[2] => service_description
[3] => radius_around_city_available
[4] => tax_nbr
[5] => user_id
[6] => average_score
)

[table:protected] => photographers
[touches:protected] => Array
(
[0] => stypesPhotographer
)

[connection:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
(
[id] => 677
[is_photographer] => 1
[ETC>>>>>>>>]
)
[original:protected] => Array
(
[id] => 677
[is_photographer] => 1
[ETC>>>>>>>>]
)

[relations:protected] => Array
(
)

[hidden:protected] => Array
(
)

[visible:protected] => Array
(
)

[appends:protected] => Array
(
)

[guarded:protected] => Array
(
[0] => *
)

[dates:protected] => Array
(
)

[observables:protected] => Array
(
)

[with:protected] => Array
(
)

[morphClass:protected] =>
[exists] => 1
)

// THE $photoTEST result:
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
)

)

Так что вы можете видеть $photographers_available только что опустели после ->first(), Поверх этого paginate просто не будет работать, даже если он используется прямо в начальном запросе.

1

Решение

$photographers_available; // it is a query, consider other name

$photographers_available->first();
// set limit 1 on the query and return it's result

$photographers_available->get();
// returns the query result (remember limit 1 above..)

$photographers_available->paginate();
// return the query result paginated (ignoring limit 1 above)

И я предлагаю вам сделать это (без этого first вызов):

dd($photographers_available->get());

или же return эта вещь, а не echo whataver, поскольку это не так. Вывод чего-либо подобного в контроллер прерывает поток приложения.


Отвечая на вашу проблему, как в комментариях: верните laravel / framework к той версии, которая была у вас ранее (на локальном сервере / dev)

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector