英文:
Laravel shows me an incorrect message [Is confuse]
问题
Laravel错误页面显示了一个不正确的错误消息,消息内容如下:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'
但是我没有一个名为"id
"的列,正确的列名是id_doctor
。我已经正确编写了SQL查询(Query Builder),但Laravel认为它是错误的。
这是我的代码,该函数:
public function editarMedico(Medicos $medicos){
$datos = DB::table('medicos')
->join('tipo_medico', 'medicos.especialidad_id', '=', 'tipo_medico.id_tipo_medico')
->selectRaw("medicos.id_doctor, CONCAT(medicos.nombre, ' ', medicos.apellidos) AS nombre_medico, rut, fecha_nacimiento, tipo_medico.nombre_tipo AS especialidad, estado")
->where('medicos.id_doctor', '=', $medicos->id_doctor)->first();
return view('forms.editar-horarios', compact('datos', 'medicos'));
}
我已经尝试了以下命令,我认为这应该是会话错误:
首先:
PS C:\xampp\htdocs\MyProject> [ctrl+c, to close batch connection] Do you want to close the connection (S/N)?
PS C:\xampp\htdocs\MyProject> [ctrl+c, to close serve connection]
然后:
PS C:\xampp\htdocs\MyProject> php artisan route:clear
PS C:\xampp\htdocs\MyProject> php artisan view:clear
PS C:\xampp\htdocs\MyProject> php artisan cache:clear
PS C:\xampp\htdocs\MyProject> php artisan config:clear
PS C:\xampp\htdocs\MyProject> php artisan serve
PS C:\xampp\htdocs\MyProject> npm run dev
然后,我关闭并重新打开Xampp的连接,并从Sublime Text中删除项目文件夹,然后重新添加。但什么也没改变。
这是路由:
Route::get('/secretaria/editar/medicos/{medicos}', [MedicosController::class, 'editarMedico'])->name('horarios.editar');
如果我将editarMedico
改为edit
,那么错误会显示:
Method App\Http\Controllers\Medicos\MedicosController::edit does not exist.
这个函数是问题的原因。Laravel显示了一个错误的视图错误。如果函数editarMedico
为空,错误消息不会改变。
此外,我如何跟踪错误消息,跟踪精确的路由或控制器?
我不知道为什么Laravel显示了一个不正确的错误。我应该怎么做?
英文:
Laravel error page shows me an incorrect error message, the messages says:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'
But I don't have a column id with the name "id
" the correct name is id_doctor
.
I have correctly written the SQL Query (Query Builder), but Laravel thinks it's wrong.
This is my code, the function.
public function editarMedico(Medicos $medicos){
$datos = DB::table('medicos')
->join('tipo_medico','medicos.especialidad_id','=','tipo_medico.id_tipo_medico')
->selectRaw("medicos.id_doctor, CONCAT(medicos.nombre,' ',medicos.apellidos) AS nombre_medico, rut, fecha_nacimiento, tipo_medico.nombre_tipo AS especialidad, estado")
->where('medicos.id_doctor', '=' ,$medicos->id_doctor)->first();
return view('forms.editar-horarios', compact('datos','medicos'));
}
I have already tried the following commands, I think it should be an error from the session.
First:
PS C:\xampp\htdocs\MyProject> [ctrl+c, to close batch connection] Do you want to close the connection (S/N)?
PS C:\xampp\htdocs\MyProject> [ctrl+c, to close serve connection]
Then:
PS C:\xampp\htdocs\MyProject> php artisan route:clear
PS C:\xampp\htdocs\MyProject> php artisan view:clear
PS C:\xampp\htdocs\MyProject> php artisan cache:clear
PS C:\xampp\htdocs\MyProject> php artisan config:clear
PS C:\xampp\htdocs\MyProject>php artisan serve
PS C:\xampp\htdocs\MyProject>npm run dev
Then I close and open the connection from Xampp and I remove the project folder from Sublime Text and re-add. But nothing changed.
This is the route.
Route::get('/secretaria/editar/medicos/{medicos}', [MedicosController::class, 'editarMedico'])->name('horarios.editar');
If I change editarMedico
to edit
then the error says.
Method App\Http\Controllers\Medicos\MedicosController::edit does not exist.
That function is the cause of the problem. Laravel shows me a wrong view error. And If the function editarMedico
was empty the error message doesn't change.
Additional, How can I trace the error message, trace the precise route or controller?
I don't know why Laravel show me an incorrect error. What Can I do?
答案1
得分: 1
当您使用模型绑定时,像这样。
public function editarMedico(Medicos $medicos) {
它将自动根据模型类中的属性在数据库中获取模型。由于您没有指定它,Laravel
认为主键是 id
。
要解决此问题,在 Medicos.php
类中,将您的主键设置为正确的值。
class Medico extends Model {
protected $primaryKey = 'id_doctor';
}
英文:
When you use model binding like this.
public function editarMedico(Medicos $medicos) {
It will automatically fetch the model based on its properties in the model class, in the database. Since you have not specified it Laravel
believes that the primary key is id
.
To fix it, in the class Medicos.php
. Set you primary key to be the correct one.
class Medico extends Model {
protected $primaryKey = 'id_doctor';
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论