我在 Laravel 7 中有项目并且它有效。但是,由于某些原因,我想重构到 Laravel 8。其他的还可以,但是这一条路线有问题。
这是我在 L7(有效)和 L8(错误)中的路由代码:Route api.php:
L7:
Route::get('/coa/find', [Setting\CoaController::Class, 'findCoa']);
L8:
Route::get('coa/find', 'Setting\CoaController@findCoa');
这是我的控制器(相同的代码):
namespace App\Http\Controllers\Setting;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use DB;
use Illuminate\Support\Facades\Validator;
use App\Coa;
class CoaController extends Controller
{
public function findCoa(Request $request)
{
$isi = $request -> isi;
$findCoa = Coa::where('coaid', 'ilike', "%" . $isi . "%")
->orWhere('deskripsi', 'ilike', "%" . $isi . "%")
->paginate(20);
// $findCoa = DB::table('coa')
// ->where('coaid', 'ilike', "%" . $isi . "%")
// ->orWhere('deskripsi', 'ilike', "%" . $isi . "%")
// ->paginate(20);
return response()->json($findCoa);
}
}
我在 App\Coa 中使用 DB 或模型,总是导致此错误:
Illuminate\Database\QueryException: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type integer: "find" (SQL: select * from "coa" where "id" = find limit 1) in file /Users/yosep/Dropbox/projects/Laravel8/kie-l8/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 692
我不明白为什么查询变成:
select * from "coa" where "id" = find limit 1
?无论我更改控制器,它总是会导致该错误。但其他方法(索引、显示($id)、销毁)都可以。就这一个还是乱七八糟的。