Получение всех данных из таблицы
Для получения всех записей определённой таблицы в Laravel используется матод table класса "DB". Метод возвращает экземпляр класса, что позволяет применить другие методы к полученному результату. К примеру, можно добавить метод get, которые возвращает экземпляр StdClass, который можно обработать в цикле foreach. Приведём пример:<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
class MouseController extends Controller{
public function index(){
$users = DB::table('users')->get();
foreach($users as $key => $user){
if($user['id'] == 1){
$user[$key]['group'] = 'admin';
}
}
return view('user.index', ['users' => $users]);
}
}
?>
Ограничение выборки
Не рекомендуется делать выборки всех данных из таблицы. Зачастую достаточно выводить только ограниченное количество столбцов и строк, что ускоряет процесс получения выборки.Для задания нужных столбцов можно использовать метод select:
<?php
$users = DB::table('users')->select('name', 'email as user_email')->get();
?>
Если нужно получить только уникальные результаты в выборке (без повторов), то можно использовать метод distinct:
<?php
$users = DB::table('users')->select('name')->distinct()->get();
?>
Если же выборка уже создана и к ней надо добавить ещё один столбец, то нужно использовать метод addSelect (до метода get):
<?php
$query = DB::table('users')->select('name');
$users = $query->addSelect('group')->get();
?>
Условия
Ограничение выборки по правилу может быть реализовано с помощью метода where. Это методу передаётся три аргумента. Первый - имя столбца, второй - оператор сравнения (или другой, который поддерживается базой), третий - значение для сравнения. К примеру, получим всех пользователей, у которых id меньше 10:<?php
$users = DB::table('users')-where('id', '<', 10)->get();
?>
Если нужно сделать два условия в связке "ИЛИ", то необходимо использовать метод orWhere:
<?php
$users = DB::table('users')->where('id', '<', 10)-where('id', '=', 42)->get();
?>
Получение строки и одного значения
Иногда требуется получить только одну строку из таблицы. Для этого лучше использовать метод "first".<?php
$user = DB::table('users')->where('name', 'MouseDC')->first();
echo $user->name;
?>
А если нужно получить не всю строку целиком, а только одну ячейку, то можно отфильтровать результат с помощью метода "value"
<?php
$email = DB::table('users')->where('name', 'MouseDC')->value('email');
?>
Получение столбца
Для получения всех значений одного столбца можно испльзовать метод "pluck".<?php
$names = DB::table('users')->pluck('name');
foreach($names as $name){
echo $name;
}
?>
Если методу pluck передать только один параметр, то вернётся массив из выборки без ключей. Но если передать два параметра, то второй станет ключом массива:
<?php
$names = DB::table('users')->pluck('name', 'id');
foreach($names as $id => $name){
echo $id . ' - ' . $name;
}
?>