PHP 7.4.7 (cli) (built: Jun 12 2020 00:00:24) ( NTS )
Laravel Framework 7.17.2
3.1.19
paket tidak menghormati lingkup global pada ekspor ex.
protected static function booted()
{
static::addGlobalScope('latest_items', function (Builder $builder) {
$builder->latest(
$builder->qualifyColumn('created_at')
);
});
}
pertanyaan benar mis.
select * from `requests` order by `requests`.`created_at` desc
tetapi lembar yang diekspor tidak diurutkan.
query
Perilaku yang diharapkan:
Perilaku sebenarnya:
Saya perlu melihat sedikit lebih banyak kode, saya tidak yakin apa yang ditunjukkan "statis" dan saya tidak dapat melihat jenis kueri apa yang Anda gunakan.
kuerinya sederhana seperti Request::query()
dan statis adalah lingkup global di bawah model, contoh diperbarui
Bisakah Anda mencoba menempatkan cakupan global itu di penyedia layanan, saya tidak yakin panggilan balik yang di-boot dipanggil karena alasan kinerja.
sebenarnya booted
adalah tempat yang benar https://laravel.com/docs/master/eloquent#global -scopes
Saya tidak mengatakan tidak. Saya mencoba mencari tahu mengapa itu tidak dipanggil.
ya saya mengerti, np saya akan mencobanya.
perhatikan bahwa menggunakan melalui penyedia layanan akan membuat fw membutuhkan waktu lebih lama untuk menyelesaikan kelas dan pengikatannya b4 menggunakannya.
maaf atas jawaban yang terlambat, mencoba penyedia layanan tetapi sayangnya memberikan hasil yang sama.
Apakah Anda menggunakan dari kueri dan harus mengantri?
menggunakan FromQuery
ya & tidak mengantri
saya percaya masalahnya adalah dengan fungsi ekspor bukan kueri, karena saya bisa mendapatkan sql yang benar.
Tampaknya metode chunk/chunkById Laravel tidak menghormati cakupan global. Mereka berfungsi ketika saya menentukan orderBy pada kueri itu sendiri.
Anda dapat mencoba mereproduksi tanpa paket ini dan melihat:
$first = Request::query()->first();
Request::query()->chunk(100, function($chunk) use($first) {
// Compare first results
dd($first, $chunk->first());
});
Tidak yakin apakah bug di Laravel atau apakah itu dimaksudkan untuk berfungsi seperti ini.
saya sudah mencoba mencari apakah orang lain memiliki masalah yang sama, hanya satu tiket yang dibuat tetapi kemudian ditutup pada hari yang sama tanpa detail lebih lanjut.
mungkin kita bisa mencoba menggunakan kursor sebagai gantinya? yang lebih baik daripada chunking untuk kumpulan data besar.
Itu akan menjadi default di 3.2 ya.
Di 3.1 Anda dapat mengembalikan kursor dalam metode pengumpulan
jadi bug ini harus diperbaiki di versi berikutnya maksud Anda?
Ya itu harus bekerja di luar kotak di versi berikutnya
ada estimasi kapan itu?
Maaf, saya tidak punya ETA untuk itu.
public function collection()
{
return Request::query()->cursor()
}
^ ini seharusnya sudah cukup untuk Anda, saya pikir
saya tidak berpikir ini akan berhasil dengan pengaturan kueri, masih thanx lagi, jika Anda mau, Anda dapat menutup tiket ini.
Itu akan menggantikan metode query()
yang Anda miliki sekarang. Mencobanya!