как сделать выборку из бд с использованием отношений laravel
Я составил такой запрос в БД.
<?php
namespace App\Http\Controllers;
use App\Models\Person;
use Illuminate\Http\Request;
class NotebookController extends Controller
{
public function index(){
\DB::connection()->enableQueryLog();
$data = Person::query()
->select(['name', 'surname'])
->with('phone:number')
->get();
dd(\DB::getQueryLog(), $data);
return view('notebook.index');
}
}
Отношения моделей Person<-Phone
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
use HasFactory;
public function phone(){
return $this->hasOne(Phone::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Phone extends Model
{
use HasFactory;
public function user(){
return $this->belongsTo(Person::class);
}
}
Сформированый запрос выглядит так:

Подскажите пожалуйста, могу ли я ввести ограничения на выборку данных для таблицы people и получить данные о phone.number
Ответы (1 шт):
Автор решения: Nikita Balashov
→ Ссылка
<?php
namespace App\Http\Controllers;
use App\Models\Person;
use Illuminate\Http\Request;
class NotebookController extends Controller
{
public function index(){
\DB::connection()->enableQueryLog();
$dataPeople = Person::query()
->select(['id','name', 'surname']) // надо запросить id
->with('phone:number,person_id') // надо запросить person_id без него не работает
->get();
dd($dataPeople);
return view('notebook.index', compact('dataPeople'));
}
}