обновить значение столбца в laravel 5.4 - PullRequest
0 голосов
/ 11 октября 2018

я хочу обновить конфиденциальность сообщения

мой контроллер

   public function changePostsPrivacy(Request $request){
            $userId = $request->user()->id;
            $postid = $request->get('id');
            //dd($postid);
            $privacy = $request->get('privacy');//dd($privacy);
            $user = User::where(['id' => $userId, 'hide' => 0])->first();
            if($user && $postid && in_array($privacy, [1,0])){
                DB::table('posts')->update(['creator_id' => $userId, 'id' => $postid],[
                    'privacy' => $privacy,
                ]);
            }
        }

Маршрут:

 Route::group(['middleware'=>['auth:api', \App\Http\Middleware\OnlyRegisteredUsers::class]], function(){
        /**
         * Group for registered users only APIs
         */
        Route::post('changePostsPrivacy','UserController@changePostsPrivacy');
    });

Миграция

 public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->longText('content');
            $table->string('short_description');
            $table->unsignedInteger('media_id')->nullable();
            $table->foreign('media_id')->references('id')->on('medias');
            $table->unsignedInteger('creator_id');
            $table->foreign('creator_id')->references('id')->on('users');
            $table->boolean('hide')->default(0);
            $table->timestamps();
        });
    }

добавлен новый столбец в этой миграции

 public function up()
        {
            Schema::table('posts', function (Blueprint $table) {
                $table->integer('privacy')->after('creator_id');
            });
        }

, когда я хочу добавить конфиденциальность в любойопубликовать сообщение об ошибке

"message": "SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (webdb. comments, CONSTRAINTcomments_post_id_foreign ИНОСТРАННЫЙ КЛЮЧ (post_id) ССЫЛКИ posts (id)) (SQL: обновление posts набор creator_id = 17, id = 48) ",

Ответы [ 4 ]

0 голосов
/ 15 октября 2018

Вы также можете попробовать это.

$post = Post::where(['creator_id' => $userId, 'id' => $postid])->first();
$post->privacy = $privacy;
$post->save();
0 голосов
/ 11 октября 2018

Если у вас есть модель Post, вы можете сделать:

Post::where(['creator_id' => $userId, 'id' => $postid])->update(['privacy' => $privacy]);

Чтобы предотвратить любую ошибку внешнего ключа, вы должны использовать запрос проверки , чтобы проверить, предоставлен ли user_idи post_id существует .

0 голосов
/ 11 октября 2018
public function changePostsPrivacy(Request $request){
            $userId = $request->user()->id;
            $postid = $request->get('id');
            $privacy = $request->get('privacy');
            $user = User::where(['id' => $userId, 'hide' => 0])->first();
            if($user && $postid && in_array($privacy, [1,0])){
                DB::table('posts')->update([
                    'privacy' => $privacy,
                ]);
            }

идентификатор создателя и идентификатор не требуется обновлять.

0 голосов
/ 11 октября 2018

вы должны использовать, где условие в обновлении конфиденциальности конфиденциальности

DB::table('posts')->where(['creator_id' => $userId, 'id' => $postid])->update(['privacy' => $privacy])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...