Laravel 5.4: Ralat "Medan Tidak Mempunyai Nilai Lalai"
Masalah:
Anda menerima ralat "Medan 'user_id' tidak mempunyai nilai lalai" apabila cuba mencipta objek Padanan baharu melalui objek Deal. Kelas Padanan anda mempunyai tatasusunan $guarded yang ditetapkan kepada tatasusunan kosong, tetapi ini tidak menyelesaikan isu.
Penyelesaian:
Ralat menunjukkan bahawa jadual pangkalan data untuk padanan memerlukan nilai bukan nol untuk lajur user_id. Untuk menyelesaikan masalah ini, kemas kini kelas Padanan anda untuk menentukan medan boleh diisi dan bukannya medan berkawal:
protected $fillable = ['user_id', 'deal_id'];
Penjelasan:
Dalam Laravel, secara lalai, semua medan adalah dikawal, bermakna mereka tidak boleh ditugaskan secara besar-besaran. Ini adalah untuk mengelakkan kelemahan keselamatan. Dengan mentakrifkan tatasusunan boleh diisi, anda menentukan medan yang boleh ditugaskan secara besar-besaran. Dalam kes ini, medan user_id dan deal_id adalah satu-satunya yang boleh ditetapkan semasa membuat objek Padanan baharu.
Dengan menggunakan tatasusunan boleh diisi dan bukannya tatasusunan terkawal, anda membenarkan medan user_id ditetapkan apabila mencipta Padanan baharu. Ini akan menyelesaikan ralat dan membolehkan anda berjaya mencipta padanan baharu.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Field Doesn't Mempunyai Nilai Lalai' dalam Laravel 5.4 Apabila Mencipta Objek Padanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!