您實際上可以使用選擇AS
不使用DB::raw()
。只是傳遞一個數組到select()
方法,像這樣:
$event = Events::select(['name AS title', 'description AS content'])->first();
// Or just pass multiple params
$event = Events::select('name AS title', 'description AS Content');
$event->title;
$event->content;
剛纔測試。
編輯:
而且我建議對使用DB:raw()
查詢來執行你的描述字段的CONCAT。如果您使用的是雄辯模型,則可以使用accessors & mutatators來爲您執行此操作,因此如果您需要有限的描述,則只需將其輸出到視圖中,而不必每次都使用相同的查詢來獲取有限的描述。例如:
class Book extends Eloquent
{
public function getLimitedDescriptionAttribute()
{
return str_limit($this->attributes['description'], $limit = 100, $end = '...');
}
}
在視圖:
@foreach($books as $book)
{{ $book->limited_description }}
@endforeach
輸出示例(不準確限制):
The description of this book is...
EDIT#2:
我想還建議不要使用數據庫門面,因爲它總是利用您的默認連接。如果你正在查詢一個輔助連接,除非你主動指定它:
DB::connection('secondary')->table('hire_bikes')->select(['name as title'])->get();
原因等同於後面的是什麼是DB :: query('SELECT title,url, image,concat(SUBSTRING_INDEX(description,「」,25),「...」)AS描述,category FROM hire_bikes ORDER BY RAND()');' –
您可以編輯您的問題。 ;)順便說一下,通常你會在模型中執行這樣的邏輯,否則你將失去使用流利的好處(與DBMS無關),並且你可以首先進行原始查詢,節省時間。 – dualed
它的查詢我只需要在一個頁面上運行,所以不需要它在模型中,它沒有連接或依賴關係等......我知道它通過原始查詢很容易完成,並且一樣快,我是隻是希望瞭解更多關於Fluent方法的信息,看看是否可以選擇多列而不選擇全部。流利只會讓你有1列或所有列,這是一個恥辱! –