Почему в базу данных отправляются два входа, а не один? - PullRequest
0 голосов
/ 12 мая 2019

Я просто не понимаю, как это происходит. После ввода пользователем текста в базу данных отправляются две его копии, а не одна. Я почти уверен, что мой код верен, но не уверен, почему он отправляет дубликаты копий ввода пользователя в базу данных.

Что я делаю не так?

enter image description here

Вот мой create_posts_table в папке миграций:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->string('body', 140);
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

отправка в БД:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;

class PostController extends Controller
{
    public function create(Request $request, Post $post) {
        // create post
        $createdPost = $request->user()->posts()->create([
            'body' => $request->body
        ]);

        // return response
        return response()->json($post->with('user')->find($createdPost->id));
    }
}

1 Ответ

0 голосов
/ 12 мая 2019

На самом деле я не буду вдаваться в ваш код, но вы можете просто

$post = App\Post::firstOrCreate(['body' => 'body' => $request->body]);

Вы можете попробовать различные методы create или insert , описанные в документации.

Также я не думаю, что извлечение всех сообщений пользователя для каждой вставки является хорошей практикой, которую вы делаете, используя $request->user()->posts().

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