Laravel 为啥通过 id 获取元素不起作用
Posted
技术标签:
【中文标题】Laravel 为啥通过 id 获取元素不起作用【英文标题】:Laravel why get element by id is not workingLaravel 为什么通过 id 获取元素不起作用 【发布时间】:2022-01-10 18:02:55 【问题描述】:当我在 Laravel 控制器中输入硬编码 id 时,我能够获取数据,但是当 我在文本框数据中输入了相同的值,但出现错误。
working Laravel controller
显示针对 id 123 的值:
public function getdata(Request $request)
$files = Files::where('file_code','=','123')->first();
return response()->json([
'files'=> $files,
], 200);
Laravel 控制器不工作:
public function getdata(Request $request)
$file_code=Files::find($request->id);
$files = Files::where($file_code,'=','file_code')->get();
return response()->json([
'files'=> $files,
], 200);
日志错误:
Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `files` where `` = file_code)
查看:
<input v-model="state.file_code" type="text" placeholder="Enter file code">
<textarea v-model="state.files.text_data" placeholder="text appear here "></textarea>
<button @click="getdata" class="bg-green-800 rounded p-2 mb-5 text-white " >RECEIVE</button>
获取函数:
function getdata()
axios.get('http://127.0.0.1:8000/api/get-data',
id: state.file_code,
)
.then(response=>
state.files=response.data.files;
);
路线:
Route::get('get-data',[FilesController::class,'getdata']);
【问题讨论】:
为什么要搜索以$file_code
的值命名的列(可能是null
或对象)?没有您应该搜索的特定列吗?
我想根据 id 获取数据,例如。 123 在上面的工作控制器中完成。
我认为 $request->id 正在从视图中获取 id。
这个表/模型的主键是什么?是id
还是file_code
? .... 如果第一个示例有效,为什么不删除硬编码值并使用那里的输入?
【参考方案1】:
您的问题在这里:
路线:
Route::get('get-data',[FilesController::class,'getdata']);
控制器:
$file_code=Files::find($request->id);
$files = Files::where($file_code,'=','file_code')->get();
您的路由没有指定id
变量,因此您的控制器中的$request->id
将始终为null
。
然后您尝试使用Files::find(null)
获取Files
对象,它也将始终返回null
,即$file_code
是null
。
然后你正在寻找另一个Files
对象Files::where(null,'=','file_code')->get();
。此行将返回所有Files
对象,其中null
或""
列为"file_code"
。
您可能想要做的是:
路线:
Route::get('get-data/id',[FilesController::class,'getdata']);
控制器:
$files = Files::find($request->id);
【讨论】:
以上是关于Laravel 为啥通过 id 获取元素不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 laravel 的 whereBetween 中不起作用