質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
DELETE

ファイルシステムからファイル、データベースからレコードを削除することまたはメモリ内のオブジェクトの割り当てを取り消すことをさします。もしくは、HTTPプロトコルのDELETEを指すこともあります。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

受付中

Laravel  データ削除後のページ表示のリダイレクト処理がエラーになる

shunta80
shunta80

総合スコア73

DELETE

ファイルシステムからファイル、データベースからレコードを削除することまたはメモリ内のオブジェクトの割り当てを取り消すことをさします。もしくは、HTTPプロトコルのDELETEを指すこともあります。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

1回答

0評価

0クリップ

229閲覧

投稿2022/01/27 08:43

編集2022/02/01 13:54

前提・実現したいこと

下記画面で削除を押したときにそのままページが更新されて消したデータは表示させないようにしたい。

イメージ説明

viewでページ表示を書くとエラーはでないが消したデータが表示され、他の部分をクリックすると消える
それをridirectで1発で表示させないようにしたい。

発生している問題・エラーメッセージ

IDが渡されていないという内容のエラーが発生。
イメージ説明

こちらはいただいた回答のIDの引き渡しで解決しましたがエラーメッセージが変わりました。

新たなエラーメッセージ
イメージ説明

該当のソースコード

下記コードで削除後の処理を行っています。

FolderController.php

public function delete(int $id){ $folders = Auth::user()->folders()->get(); $current_folder=Folder::find($id); $tasks=$current_folder->tasks()->get(); $current_folder->delete(); // このviewであればエラーはでない。 // return view('tasks.index')->with(['folders'=>$folders, // // 'current_folder_id' => $id, // 'current_folder_id' => $current_folder->id, // 'tasks'=>$tasks, // // var_dump($current_folder)]); // ]); // 下記3つどれも同じエラー return redirect()->route('tasks.index',['folders'=>$folders,'current_folder_id' => $current_folder->id,'tasks'=>$tasks,]); return redirect()->route('tasks.index',['folders'=>$folders,'current_folder_id' => $current_folder->id,'tasks'=>$tasks,],$current_folder->tasks); return redirect()->route('tasks.index',$current_folder->tasks); }

Folder.php

<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Folder extends Model { // use HasFactory; public function tasks() { return $this->belongsTo('App\Models\Task'); } }

web.php

<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Auth; Route::get('homestead.test', function () { return view('home.blade.php'); })->middleware(['auth'])->name('homestead.test'); require __DIR__.'/auth.php'; Route::group(['middleware' => 'auth'], function() { Route::get('/', 'HomeController@index')->name('home'); Route::get('/folders/{id}/tasks', 'TaskController@index')->name('tasks.index'); Route::get('/folders/create', 'FolderController@showCreateForm')->name('folders.create'); Route::post('/folders/create', 'FolderController@create'); Route::get('/folders/{id}/tasks/create', 'TaskController@showCreateForm')->name('tasks.create'); Route::post('/folders/{id}/tasks/create', 'TaskController@create'); Route::get('/folders/{id}/tasks/{task_id}/edit', 'TaskController@showEditForm')->name('tasks.edit'); Route::post('/folders/{id}/tasks/{task_id}/edit', 'TaskController@edit'); Route::delete('/folders/{id}/delete', 'FolderController@delete')->name('delete'); Route::delete('/folders/{id}/edit/delete', 'TaskController@delete')->name('del'); }); Auth::routes();

index.blade.php

<!DOCTYPE html> <html lang="ja"> @extends('layout') @section('content') <div class="container"> <div class="row"> <div class="col col-md-4"> <nav class="panel panel-default"> <div class="panel-heading">フォルダ</div> <div class="panel-body"> <a href="{{ route('folders.create') }}" class="btn btn-default btn-block"> フォルダを追加する </a> </div> <div class="list-group"> @foreach($folders as $folder) <div class="po"> <a href="{{ route('tasks.index', ['id' => $folder->id]) }}" class="list-group-item {{ $current_folder_id === $folder->id ? 'active' : '' }} mm"> {{ $folder->title }} </a> <form action="{{route('delete',$folder->id)}}" method="post"> @csrf @method('DELETE') <button>削除</button> </div> </form> @endforeach </div> </nav> </div> <div class="column col-md-8"> <div class="panel panel-default"> <div class="panel-heading">タスク</div> <div class="panel-body"> <div class="text-right"> <a href="{{ route('tasks.create', ['id' => $current_folder_id]) }}" class="btn btn-default btn-block"> タスクを追加する </a> </div> </div> <table class="table"> <thead> <tr> <th>タイトル</th> <th>状態</th> <th>期限</th> <th></th> </tr> </thead> <tbody> @foreach($tasks as $task) <tr> <td>{{ $task->title }}</td> <td> <span class="label {{ $task->status_class }}">{{ $task->status_label }}</span> </td> <td>{{ $task->formatted_due_date }}</td> <td><a href="{{ route('tasks.edit', ['id' => $task->folder_id, 'task_id' => $task->id]) }}">編集</a></td> </tr> @endforeach </tbody> </table> </div> </div> </div> </div> @endsection

試したこと

Folder.php
ここのtasksでデータベースの情報を取得できると考えています。
belongsToをhasManyにしても同じエラーでできませんでした。

<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Folder extends Model { // use HasFactory; public function tasks() { return $this->belongsTo('App\Models\Task'); } }

補足情報(FW/ツールのバージョンなど)

Laravel8 を使用

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

shunta80

2022/01/28 05:54

下記回答でIDを渡したところエラーメッセージが変わりましたが解決でません。 画像が追加できないのでエラー文をコピーしました。 TypeError Symfony\Component\HttpFoundation\RedirectResponse::__construct(): Argument #2 ($status) must be of type int, Illuminate\Database\Eloquent\Collection given, called in /home/vagrant/code/sample/vendor/laravel/framework/src/Illuminate/Routing/Redirector.php on line 233

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

DELETE

ファイルシステムからファイル、データベースからレコードを削除することまたはメモリ内のオブジェクトの割り当てを取り消すことをさします。もしくは、HTTPプロトコルのDELETEを指すこともあります。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます