我想用這個陳述句在 MySQL 中構建一個查詢:
SELECT CONCAT(students.FirstName, ' ', students.LastName) AS FullName FROM `students` WHERE CONCAT(students.FirstName, ' ', students.LastName)LIKE '%John%'
現在,我使用 Laravel 的 Query Builder,我可以使用CONCAT(). 這是我的代碼供參考:
public function getStudent(Request $request)
{
$fullName = Student::select(FacadesDB::raw('SELECT CONCAT(LastName, ", ", FirstName) AS FullName'), )
->where(FacadesDB::raw('CONCAT(LastName, ", ", FirstName)', 'LIKE', "'% {{ $request->terms }} %'"))
->get();
return response()->json($fullName);
}
當我嘗試運行代碼時,得到如下結果:
SQLSTATE[42000]:語法錯誤或訪問沖突:1064 你的 SQL 語法有錯誤;檢查與您的 MariaDB 服務器版本相對應的手冊,了解
students在第 1 行的'SELECT CONCAT(LastName, ", ", FirstName) AS FullName from where CO...'附近使用的正確語法(SQL:選擇 SELECT CONCAT(LastName, ", ", FirstName) AS FullName fromstudentswhere CONCAT(LastName, ", ", FirstName) is null)
有沒有辦法可以實作這個目標?我花了將近 4 個小時來解決此代碼,但我仍然無法解決。每一個幫助將不勝感激。我是 Laravel 的新用戶,順便說一句。
uj5u.com熱心網友回復:
您可以使用地圖功能:-
Student::select("firstname","lastname")
->where("firstname","like","%john%")
->orWhere("lastname","like","%john%")
->get()->map(function($query){
$fullname = $query->firstname." ".$query->lastname
return ["fullname" => $fullname]
})
uj5u.com熱心網友回復:
我會保持簡單,只需將您的查詢表述為:
SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM students
WHERE FirstName LIKE '%John%' OR LastName LIKE '%John%';
更新 Laravel 代碼:
public function getStudent(Request $request)
{
$fullName = Student::select(FacadesDB::raw('CONCAT(LastName, ", ", FirstName) AS FullName'), )
->where(FirstName, 'LIKE', '%John%')
->orWhere(LastName, 'LIKE', '%John%')
->get();
return response()->json($fullName);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322117.html
