如何使用查詢構建器在 Laravel Eloquent 查詢中給表賦別名?
Eloquent 是一種新的物件關係對映器 (ORM),它有助於與資料庫互動。藉助 Eloquent,每個表都有一個對映模型,該模型負責對該表上所有操作的處理。
假設我們已經建立了一個名為student的表,其中包含以下內容−
+----+---------------+------------------+-----------------------------+-----------------------------+---------+------+ | id | name | email | created_at | updated_at | address | age | +----+---------------+------------------+-----------------------------+-----------------------------+---------+------+ | 1 | Siya Khan | siya@gmail.com | 2022-05-01T13:45:55.000000Z | 2022-05-01T13:45:55.000000Z | Xyz | 20 | | 2 | Rehan Khan | rehan@gmail.com | 2022-05-01T13:49:50.000000Z | 2022-05-01T13:49:50.000000Z | Xyz | 18 | | 3 | Rehan Khan | rehan@gmail.com | NULL | NULL | testing | 20 | | 4 | Rehan | rehan@gmail.com | NULL | NULL | abcd | 15 | | 5 | Nidhi Agarwal | nidhi@gmail.com | NULL | NULL | abcd | 20 | | 6 | Ashvik Khanna | ashvik@gmail.com | NULL | NULL | oooo | 16 | | 7 | Viraj Desai | viraj@gmail.com | NULL | NULL | test | 18 | | 8 | Priya Singh | priya@gmail.com | NULL | NULL | test123 | 20 | +----+---------------+------------------+-----------------------------+-----------------------------+---------+------+ 8 rows in set (0.00 sec)
示例
在 Laravel 中,可以使用“as”關鍵字在表上建立別名。以下是一個示例
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; class StudentController extends Controller { public function index() { echo $student = Student::from( 'students as std' ) ->orderBy('std.name', 'ASC') ->orderBy('std.email', 'ASC') ->get(); } }
輸出
上述程式碼的輸出如下
[{"id":2,"name":"Rehan Khan","email":"rehan@gmail.com","created_at":"2022-05-01T13:49:50.000000Z","updated_at":"2022-05-01T13:49:50.000000Z","address":"Xyz"},{"id":1,"name":"Siya Khan","email":"siya@gmail.com","created_at":"2022-05-01T13:45:55.000000Z","updated_at":"2022-05-01T13:45:55.000000Z","address":"Xyz"}]
示例 1
現在讓我們使用 DB facade 測試別名
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; //use App\Models\Student; use DB; class StudentController extends Controller { public function index() { $users = DB::select('select * from students as std'); print_r($users); } }
輸出
Array (
[0] => stdClass Object(
[id] => 1
[name] => Siya Khan
[email] => siya@gmail.com
[created_at] => 2022-05-01 13:45:55
[updated_at] => 2022-05-01 13:45:55
[address] => Xyz
)
[1] => stdClass Object(
[id] => 2
[name] => Rehan Khan
[email] => rehan@gmail.com
[created_at] => 2022-05-01 13:49:50
[updated_at] => 2022-05-01 13:49:50
[address] => Xyz
)
)
示例 2
以下是使用 DB facade 建立表別名的另一種方法−
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; //use App\Models\Student; use DB; class StudentController extends Controller { public function index() { $users = DB::table('students as std') ->get(array('std.name as std_name')); print_r($users); } }
輸出
上述程式的輸出為 -
Illuminate\Support\Collection Object (
[items:protected] => Array(
[0] => stdClass Object(
[std_name] => Siya Khan
)
[1] => stdClass Object(
[std_name] => Rehan Khan
)
)
[escapeWhenCastingToString:protected] =>
)
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP