Реляционная База Данных Laravel

244
01 августа 2017, 18:28

У меня есть такие таблицы:

| id         | subject       |
------------------------------
| 1          | Математика    |
| 2          | Химия         |
| 3          | Физика        |

| id         | text          | created_at | subject_id |
--------------------------------------------------------
| 1          | Lorem ipsum.. | 2017 20 07 | 3          |
| 2          | 2 Lorem ipsum | 2017 20 09 | 2          |
| 3          | some text     | 2017 21 11 | 3          |

Как мне реализовать это с помощью миграций и сделать их реляционными?

А также, этот список я планирую заменить следующим образом:

<select class="form-control"> 
				  <option>Алгебра</option> 
				  <option>Геометрія</option> 
				  <option>Українська література</option> 
				  <option>Зарубіжна література</option> 
				  <option>Економіка</option> 
				  <option>Біологія</option> 
				  <option>Хімія</option> 
				  <option>Географія</option> 
				  <option>Інформатика</option> 
				  <option>Інформаційні технології</option> 
				  <option>Історія України</option> 
				  <option>Всесвітня історія</option> 
				  <option>Художня культура</option> 
				  <option>Фізкультура</option> 
				  <option>Правознавство</option> 
				  <option>Англійська мова</option> 
				  <option>Українська мова</option> 
</select>

Вот так:

@foreach($subs as $sub) 
<option>{{ $sub->subject }}</option> 
<!-- $sub->subject тут хранится имя предмета --> 
@endforeach

НО!

Как мне потом обработать этот участок кода при записи в БД? И как мне позже в пути ../{id}/edit сделать выбраным селект, по id?

Answer 1

Сделать таблицы реляционными вам прийдется всё равно прописывая соответствующие отношения в моделях. Для первой:

public function dataTable()
    {
        return $this->hasMany('App\DataTable', subject_id);
    }

Для второй ( куда записываете )

public function subject()
{
    return $this->belongsTo('App\subject', subject_id);
}

Вся запись у Вас ведется в вторую таблицу с использованием id из первой.

 @foreach
    ($subs as $sub)
        <option value= {{$sub->id}} >{{ $sub->subject }}</option>
        <!-- $sub->subject тут хранится имя предмета -->
 @endforeach

В форме action должен ссылатся на роут который будет принимать этот запрос {!! Form::open(['route' => 'post.store']) !!} @include('post._form') {!! Form::close()!!}

Ну а в контроллере обрабатывайте чемто вида :

    public function store(Request $request)
    {
           $projects = new dataTable();
           $projects->create($$request->all());
           return redirect()->route('posts');
    }
READ ALSO
как обрезать эту строку?

как обрезать эту строку?

Как обрезать строку чтобы выдавало только "PBcqVio2ado" ? "https://wwwyoutube

238
как перейти на GNU parallel?

как перейти на GNU parallel?

как вот это (это команда запускается кроном 1 раз в минуту)

231
Реестр и маршрутизатор на php

Реестр и маршрутизатор на php

Активно осваиваю ООП на phpНашел в интернете примеры реализаций паттерна registry и маршрутизатора router

615