Laravel 为什么通过 id 获取元素不起作用

Laravel why get element by id is not working

当我在 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']);

您的问题在这里:

路线:

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 对象,它也总是 return null,即 $file_codenull.

那么您正在寻找另一个带有 Files::where(null,'=','file_code')->get();Files 对象。此行将 return 所有 Files 对象,其中 null"" 列是 "file_code".

您可能想要做的是:

路线:

Route::get('get-data/{id}',[FilesController::class,'getdata']);

控制器:

$files = Files::find($request->id);