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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

受付中

laravel 中間テーブルの値が削除出来ない

chiicheer
chiicheer

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

2回答

0評価

2クリップ

29閲覧

投稿2018/09/10 10:22

前提・実現したいこと

companyのadminページに、そのcompanyに所属しているuserの一覧リストを表示させています。
個々のuser情報に削除ボタンを作成し、その特定のuserのみを削除出来るようにしたい。

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

特にエラーはでない。 削除ボタンを押した時に、通常であれば画面が切り替わってエラーになるが画面も切り替わらない。

該当のソースコード

《companiesのadmin.blade.php》 @extends('layouts.app') <?php $role=Auth::user()->role; $users=Auth::user(); ?> @if($role == $company->id) @section('content') <div class="container"> <br> <h2>御社に応募している登録者情報</h2> @foreach($company->users as $user) <br> <table class="table table-striped"> <tr> <th class="table-dark" width="20%">{{ __('氏名') }}</th> <td>{{ $user->name }}</td> </tr> .......省略 <br> <br> {!!Form::open(['action'=>['Company_UserController@destroy', $company->id], 'method'=>'POST'])!!} {{ Form::hidden('_method', 'DELETE') }} {{ Form::submit('消去', ['class'=>'btn']) }} {!! Form::close() !!} @endforeach <br> </table> @else <h3>申し訳ございません。<br> こちらのページはご覧頂けません。</h3> @endif <a class="btn" href="/countries">戻る</a> </div> @endsection
《CompaniesController.php》 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth;//←これが重要! use Illuminate\Support\Facades\Storage; use Illuminate\Database\Eloquent\Collection; use App\Company; use App\User; use App\Country; class CompaniesController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ /*public function __construct() { $this->middleware('auth', ['except'=>['show']]); }*/    ・・・省略 /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $company=Company::find($id); if(Auth::user()->role == $company->id || Auth::user()->id == 1){ Storage::delete('public/photos1'. $company->cover_image1); Storage::delete('public/photos2'. $company->cover_image2); Storage::delete('public/photos3'. $company->cover_image3); } $company->users()->detach(); $company->delete(); return redirect('/countries/' . $company->country_id)->with('success', '御社の内容が正常に削除されました。 正しく反映されているか確認をして下さい。'); } }
《Company_UserController.php》 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Database\Eloquent\Collection; use App\Company; use App\User; class Company_UserController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $company=Company::findOrFail($request->input('company_id')); $user=User::findOrFail(Auth::id()); $company->users()->attach($user->id); return redirect('/companies/' . $company->id)->with('success', '応募が完了しました。 担当者からの連絡をお待ち下さい。'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $company=Company::find($id); $company->users()->detach($user->id); return redirect('/companies/{{$company-id}}/admin')->with('success', '削除が完了しました。正しく反映されているか確認して下さい。'); } }
《Company.php》 <?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Auth; use App\User; class Company extends Model { protected $fillable= array('country_id', 'cover_image1', 'cover_image2', 'cover_image3', 'title', 'description', 'job_content', 'place', 'relate', 'role', 'salary', 'welfare', 'time', 'skill', 'apply_way', 'company_name', 'company_place', 'employee', 'company_type', 'company_content'); public function country(){ return $this->belongsTo('App\Country'); } public function users() { return $this->belongsToMany('App\User', 'company__users')->withTimestamps(); } }
《User.php》 <?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'name_call', 'email', 'password', 'role', 'gender', 'tel', 'birthday', 'university_name', 'university_degree', 'university_date', 'master_university', 'master_degree', 'master_date', 'company_name', 'position', 'period', 'company_name2', 'position2', 'period2', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; public function companies(){ return $this->belongsToMany('App\Company', 'company__users')->withTimestamps(); } }
《web.php》 <?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::resource("countries", "CountriesController"); Route::resource("companies", "CompaniesController"); Route::resource("users", "UsersController"); Route::resource("company__users", "Company_UserController"); Route::get("/companies/{id}/admin", "CompaniesController@admin"); Route::get("/users/{id}/edit", "UsersController@edit"); Route::post('/companies/{id}/admin', 'Company_UserController@destroy'); Route::post('/countries/store', 'CountriesController@store'); Route::post('/companies/store', 'CompaniesController@store'); //Route::post("/companies/{id}", "CompaniesController@store"); //Route::get("/companies/{id}", "CompaniesController@show"); Auth::routes(); Route::get('/home', 'HomeController@index')->name('home');

試したこと

{!!Form::open(['route' => 'company__users.destroy', 'method'=>'POST'])!!}
と書くと、エラーになる。

C:\Users\Chihiro Suzuki\Desktop\africa\africaworks-test\vendor\laravel\framework\src\Illuminate\Routing\Exceptions\UrlGenerationException.php <?php namespace Illuminate\Routing\Exceptions; use Exception; class UrlGenerationException extends Exception { /** * Create a new exception for missing route parameters. * * @param \Illuminate\Routing\Route $route * @return static */ public static function forMissingParameters($route) { return new static("Missing required parameters for [Route: {$route->getName()}] [URI: {$route->uri()}]."); } } Arguments "Missing required parameters for [Route: company__users.destroy] [URI: company__users/{company__user}]. (View: C:\Users\Chihiro Suzuki\Desktop\africa\africaworks-test\resources\views\companies\admin.blade.php) ◀" 

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

dyoshikawa
dyoshikawa

2018/09/10 10:42

今出先なので詳細な回答はできないんですが、とりあえずreturn redirect\('/companies/{{\$company-id}}/admin'\)の書き方はNGということをstoreから学んで欲しかったですね。
chiicheer
chiicheer

2018/09/10 10:47

失礼致しました。コード書き換えました。return redirect\('/companies/' \. \$company->id \. '/admin'\)->with\('success', '削除が完了しました。正しく反映されているか確認して下さい。'\);
dyoshikawa
dyoshikawa

2018/09/10 10:52

それでokです。あと本題のところはリクエストメソッドがPOSTになってますけどDELETEですね。
chiicheer
chiicheer

2018/09/10 11:54

{!!Form::open\(\['action'=>\['Company_UserController@destroy', \$company->id\], 'method'=>'DELETE'\]\)!!}に変更しました。まだ削除ボタンを押しても他のページの削除ボタンのようにページ飛びません。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。