Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Я так понимаю, большого смысла работать с отношениями в Eloquent нет. Разве что некоторые запросы будут короче и для информативности в моделях указывать связи?
Всем привет. Никак в документации не могу найти решение по поводу внешнего объединения. Допустим есть 2 сущности, со связью ManyToMany:
Class Foo extends Model
{
public function bars()
{
return $this->belongsToMany(Bar::class);
}
}
Class Bar extends Model
{
public function foos()
{
return $this->belongsToMany(Foo::class);
}
}
Данный запрос делает внутреннее объединение:
App\Foo::find(1)->bars()->get();
Можно ли используя отношения в Eloquent сделать такого типа запрос?
SELECT * FROM foos f LEFT JOIN bar_foo bf ON bf.foo_id = f.id WHERE f.id = 1;
Как насчет такого подхода?
Создаем базовый шаблон формы
//views/components/form/template.blade.php
{{ Form::open(['url' => $action]) }}
{{ Form::label('title', 'Название') }}
{{ Form::text('title', null) }}
<br>
{{ Form::label('description', 'Описание') }}
{{ Form::text('description', null) }}
<br>
{{ Form::label('text', 'Текст') }}
{{ Form::textarea('text', null) }}
<br>
{{ $other_fields }}
<br>
{{ Form::submit('Отправить') }}
{{ Form::close() }}
На конкретных страницах вызываем этот шаблон и передаем ей нужные значения
// page-create.blade.php
@component('components.form.template', ['action' => app()->url('page-create')])
@slot('other_fields')
{{ Form::label('parent_id', 'Родитель') }}
{{ Form::text('parent_id', null) }}
<br>
{{ Form::label('type', 'Тип страницы') }}
{{ Form::text('type', null) }}
@endslot
@endcomponent
// article-create.blade.php
@component('components.form.template', ['action' => app()->url('article-create')])
@slot('other_fields')
{{ Form::label('category_id', 'Категория') }}
{{ Form::text('category_id', null) }}
@endslot
@endcomponent
// category-create.blade.php
@component('components.form.template', ['action' => app()->url('category-create')])
@slot('other_fields')
{{ Form::label('parent_id', 'Родитель') }}
{{ Form::text('parent_id', null) }}
@endslot
@endcomponent
Всем привет, подскажите пожалуйста, как вы решаете ситуацию, когда одна форма подходит для нескольких страниц? Допустим есть 3 таблицы:
pages
id, title, description, text, parent_id, type
articles
id, title, description, text, category_id
categories
id, title, description, text, parent_id
Как видим, формы для редактирования и создания записей в этих таблицах совпадают, за небольшим исключением. Т.е смысла для каждой таблицы создавать новую форму нет. Можно создать 1 форму с полями id, title, description, text и на странице подключения формы добавлять недостающие поля и action.
Как это сделать я понимаю, но меня интересует именно Laravel Best Practices, чтобы не создавать костыли. Я изучаю этот фреймворк буквально 2 дня и со всеми нюансами еще не знаком. Спасибо заранее.
Страницы 1