Метод from
Метод from применяется к запросу Query Builder
и позволяет явно указать таблицу, из которой будут
выбираться данные. Первым параметром передаётся имя
таблицы в базе данных. Вторым параметром можно
передать псевдоним таблицы. Если метод не вызван,
Laravel использует имя таблицы, определённое в модели.
Синтаксис
<?php
DB::table('users')->from('users', 'u')->get();
?>
Пример использования с Query Builder
Давайте получим всех пользователей из таблицы 'users'
с помощью Query Builder и метода from:
<?php
use Illuminate\Support\Facades\DB;
$users = DB::table('users')->from('users')->get();
foreach ($users as $user) {
echo $user->name;
}
?>
Результат выполнения кода:
"John Doe"
"Jane Smith"
"Mike Johnson"
Пример с псевдонимом таблицы
Давайте используем псевдоним 'u' для таблицы
'users', чтобы сократить запрос:
<?php
use Illuminate\Support\Facades\DB;
$users = DB::table('users')->from('users', 'u')->select('u.id', 'u.name')->get();
foreach ($users as $user) {
echo $user->name;
}
?>
Результат выполнения кода:
"John Doe"
"Jane Smith"
"Mike Johnson"
Пример с объединением таблиц
Метод from полезен при объединении таблиц,
когда нужно указать основную таблицу с псевдонимом:
<?php
use Illuminate\Support\Facades\DB;
$res = DB::table('users')
->from('users', 'u')
->join('posts', 'posts.user_id', '=', 'u.id')
->select('u.name', 'posts.title')
->get();
foreach ($res as $row) {
echo $row->name . ' - ' . $row->title;
}
?>
Результат выполнения кода:
"John Doe - First post"
"John Doe - Second post"
"Jane Smith - First post"
Пример в Eloquent
В Eloquent метод from также доступен
и позволяет переопределить таблицу модели:
<?php
use App\Models\User;
$res = User::from('users', 'u')->where('u.active', 1)->get();
foreach ($res as $user) {
echo $user->name;
}
?>
Результат выполнения кода:
"John Doe"
"Jane Smith"
Пример с динамическим именем таблицы
Метод from удобно использовать, когда имя
таблицы формируется динамически:
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
$tableName = 'users';
if (Schema::hasTable($tableName)) {
$res = DB::table($tableName)->from($tableName)->get();
$count = $res->count();
echo "Found " . $count . " records";
}
?>
Результат выполнения кода:
"Found 3 records"