Как я могу передать данные в 2 таблицы в той же функции - PullRequest
0 голосов
/ 08 апреля 2019

Мне нужно передать те же данные в 2 таблицы (prospect & course_prospect)

Это моя функция

public function store(Request $request) {

    $prospect = new Prospect;

    $prospect->prospect_name = $request->prospect_name;
    $prospect->prospect_nic = $request->prospect_nic;
    $prospect->contact_number = $request->contact_number;
    $prospect->address = $request->address;
    $value = implode(',', $request->course_intrested);
    $prospect->course_intrested = $value;
    $prospect->comments = $request->comments;
    $prospect->referred_through = $request->referred_through;

    $selected_courses = new Prospect;
    $course_prospect = new Course_prospect;

    $course_prospect->course_id = $value;
    $course_prospect->prospect_id = $selected_courses->id;

    $course_prospect->save();
    $prospect->save();

    return redirect()->back();
}

и таблица course_prospect имеют 2 внешних ключа (course_id & prospect_id)

Это курс_перспектива миграции

    Schema::create('course_prospect', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->integer('prospect_id')->unsigned();
        $table->integer('course_id')->unsigned();
        $table->timestamps();
    });

    Schema::table('course_prospect', function($table) {
        $table->foreign('prospect_id')->references('id')->on('prospect')- 
                >onDelete('cascade');
        $table->foreign('course_id')->references('course_id')- 
                >on('course')->onDelete('cascade');
    });

но когда я отправляю свою таблицу проспекта формы, содержащую только данные. Я думаю, что внешний ключ не работает

1 Ответ

0 голосов
/ 09 апреля 2019

Я не уверен в вашей логике, но с этой строкой:

$selected_courses = new Prospect;

Вы создаете новый объект. Когда вы звоните по этой линии:

$course_prospect->prospect_id = $selected_courses->id;

$ selected_courses-> id равен NULL;

Я думаю, что вы пытаетесь использовать отношения ManyToMany здесь ...

Таким образом, правильный способ был бы сделать это:

хранилище публичных функций (Request $ request) {

$prospect = new Prospect;

$prospect->prospect_name = $request->prospect_name;
$prospect->prospect_nic = $request->prospect_nic;
$prospect->contact_number = $request->contact_number;
$prospect->address = $request->address;
$value = implode(',', $request->course_intrested);
$prospect->course_intrested = $value;
$prospect->comments = $request->comments;
$prospect->referred_through = $request->referred_through;

// Сохранение перспективы и получение идентификатора из БД

$ prospect-> Save ();

$ prospect-> курсы () -> синхронизация ($ request-> course_intrested);

return redirect()->back();

}

Это должно заполнить таблицу course_prospect, предполагая, что вы отвергли отношения ManyToMany в моделях Prospect и Course.

Подробнее здесь: https://laravel.com/docs/5.8/eloquent-relationships#many-to-many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...