Menggunakan pertanyaan pangkalan data mentah dengan model Laravel's Eloquent memberikan fleksibiliti dan membolehkan operasi lanjutan. Walau bagaimanapun, parameter pengikatan kepada pertanyaan sedemikian boleh terbukti mencabar.
Dalam pertanyaan yang disediakan:
$property = Property::select( DB::raw("title, lat, lng, ( 3959 * acos( cos( radians( ?) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians( ? ) ) * sin( radians( lat ) ) ) ) AS distance") ) ->having("distance", "<", "?") ->orderBy("distance") ->take(20) ->setBindings([$lat, $lng, $lat, $radius]) ->get();
Adalah penting untuk ambil perhatian bahawa pertanyaan menggunakan ruang letak bernama (? dengan nama yang sepadan dengan kunci parameter terikat ) dalam DB::raw.
Kunci untuk mengikat parameter dalam senario ini terletak pada penggunaan kaedah setBindings. Kaedah ini mengambil tatasusunan nilai untuk diikat pada parameter pertanyaan. Dalam contoh:
Dengan memanggil setBindings pada penghujung rantai pertanyaan, nilai parameter ditetapkan dengan betul. Ini menyelesaikan ralat "Nombor parameter tidak sah: parameter nama bercampur dan parameter kedudukan" dan membenarkan pelaksanaan pertanyaan pangkalan data mentah yang betul.
Perlu diambil perhatian bahawa penyelesaian ini tidak didokumenkan secara eksplisit, yang boleh mengecewakan. Walau bagaimanapun, memahami mekanik asas dan menggunakan penyelesaian yang disediakan membolehkan anda menggunakan pertanyaan pangkalan data mentah dengan berkesan dalam model Eloquent Laravel.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Parameter kepada Pertanyaan Pangkalan Data Mentah dalam Laravel untuk Model Fasih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!