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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

241閲覧

Laravelにてユーザーが選択したリンクを全体画面に表示したい。

kazukikanomata

総合スコア10

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/02/03 06:24

現在、Todoアプリをつくっているものです。

実装したい機能としましては、ログイン画面でログインしたユーザー名が右上あたりにでると思うのですが、そんな感じで、タスクのカテゴリー名を表示したいとおもっています。

4つのタスクを選べる画面 select.blade.phpのNWと書かれているリンクを押したら、/tasksにとび、
そのときにtasksテーブルのcategory_idとcategoriesテーブルのidが等しいnameを取り出したいです。
★リンクから選択したカテゴリーの名前を変数に渡すのがよくわからない状況です。
以下のページ遷移時にindexメソッドに処理を書きたいと思ってます。
/select → /tasks(index.blade.php)

PostControllerのindexメソッドに書き換えたいのですが、教えていただければ幸いです。

public function index($id){ // こんな感じで実装予定です。 $data = Task::with('category')->where('id', $id)->get() return view('posts/index')->with(['data' => $data]); }

DB

1--Categoriesテーブル-- 2 3id | name | created_at | updated_at | 4+----+------+------------+------------+ 5| 1 | NW | NULL | NULL | 6| 2 | NP | NULL | NULL | 7| 3 | WW | NULL | NULL | 8| 4 | WP | NULL | NULL  

DB

1--Tasksテーブル-- 2 3 id | created_at | updated_at | user_id | category_id | due_time | time | content | status | deleted_at | 4+----+---------------------+---------------------+---------+-------------+---------------------+------+--------------+-----------+---------------------+ 5| 1 | 2021-12-14 21:24:55 | 2021-12-14 21:27:57 | 1 | 2 | 2021-12-17 00:00:00 | 2 | タスク1 | first | NULL | 6| 2 | 2021-12-14 21:30:09 | 2021-12-14 21:30:09 | 1 | 2 | 2021-12-09 00:00:00 | 2 | タスク2 | 完了 | NULL |

DB

1--Usersテーブル-- 2| id | name | email | email_verified_at | password | remember_token | created_at | updated_at | 3| 1 | kazuki | abcdef@gmail.com | NULL | $2y$10$Dqj/ML3kpHLTykoFh/FFEOCy9wLEpGMlob0wK0WXfC6rulTvLm/pS | NULL | 2021-12-14 21:24:25 | 2021-12-14 21:24:25 | 4

リレーションは以下です。
主キーはcategoriesのテーブル
外部キーはtasksのテーブル

イメージ説明

web.php

1Route::get('/','PostController@top'); 2Route::get('/select','PostController@select'); 3Route::get('/tasks', 'PostController@index'); 4Route::get('posts/create', 'PostController@create'); 5Route::get('/posts/{task}', 'PostController@show'); 6Route::post('/posts', 'PostController@store'); 7Route::get('/posts/{task}/edit', 'PostController@edit'); 8Route::put('/posts/{task}', 'PostController@update'); 9Route::delete('/posts/{task}', 'PostController@destory'); 10 11 12 13Auth::routes(); 14 15Route::get('/home', 'HomeController@index')->name('home'); 16

PostController.php

1<?php 2 3namespace App\Http\Controllers; 4use App\Task; 5use App\Category; 6 7use Illuminate\Http\Request; 8 9class PostController extends Controller 10{ 11 public function top() 12 { 13 return view('posts/top'); 14 } 15 public function select() 16 { 17 return view('posts/select'); 18 } 19 public function index(Task $task) 20 { 21 //tasksという変数名でtaskテーブルの全データを渡す 22 return view('posts/index')->with([ 23 'tasks' => $task->get()]); 24 } 25 public function show(Task $task) 26 { 27 return view('posts/show')->with(['task' => $task]); 28 } 29 30 public function create(Category $category) 31 { 32 return view('posts/create')->with(['categories' => $category->get()]); 33 } 34 //保存 35 public function store(Request $request, Task $task) 36 { 37 $input = $request['task']; 38 $input += ['user_id' => $request->user()->id]; 39 $task->fill($input)->save(); 40 return redirect('/posts/' . $task->id); 41 } 42 public function edit(Task $task) 43 { 44 return view('posts/edit')->with(['task' => $task]); 45 } 46 public function update(Request $request, Task $task) 47 { 48 $input_task = $request['task']; 49 $task->fill($input_task)->save(); 50 return redirect('/posts/' . $task->id); 51 } 52 public function destory(Task $task) 53 { 54 $task->delete(); 55 //$task->save(); 56 return redirect('/'); 57 } 58} 59?>

select.blade.php

1@extends('layouts.app')                   2 3@section('content') 4<!DOCTYPE html> 5<html lang="en"> 6<head> 7 <meta charset="UTF-8"> 8 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 9 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 10 <title>Category</title> 11 <link rel="stylesheet" href="{{ asset('css/category.css') }}"> 12</head> 13<body> 14 <div class="category"> 15 <div class="catego-box catego-item1"> 16 <div class="catego-text"> 17★// 以下のリンクを押したら、/tasksにてNWが表示されるようにしたい 18 <a href="{{ url('/tasks') }}" action="{{ action('PostController@index', $category->id) }}" style="text-decoration: none;"> 19 <h3>NW</h3> 20 <p>Use More</p> 21 </a> 22 </div> 23 </div> 24 </div> 25</body> 26</html> 27@endsection 28

index.blade.php

1@extends('layouts.app')                   2 3@section('content') 4<!DOCTYPE html> 5<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> 6 <head> 7 <meta charset="utf-8"> 8 <title>テーブル一覧</title> 9 <!-- Fonts --> 10 <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet"> 11 </head> 12 <body> 13 <main> 14 <div class="container"> 15 <div class="row justify-center-center"> 16 <div class="col-md-4"> 17 <div class="card"> 18 <div class="card-header">タスク追加・詳細</div> 19 <div class="card-body"> 20 <a href="posts/create">タスク追加</a><br> 21 </div> 22 </div> 23 </div> 24 <div class="col-md-8"> 25 <div class="card"> 26 <div class="card-header">タスク:ユーザーが選んだカテゴリー名を表示したい</div> 27 <div class="card-body"> 28 <div class="tasks"> 29 <div class="task"> 30 <table class="table"> 31 <thead> 32 <tr> 33 <th class="id"></th> 34 <th class="content">タスクの内容</th> 35 <th class="due_time">期限</th> 36 <th class="status">状態</th> 37 <th class="time">かかる時間</th> 38 <th class="icon"></th> 39 <th class="icon"></th> 40 </tr> 41 </thead> 42 <tbody> 43 @foreach ($tasks as $task) 44 <tr> 45 <td>{{$task->id}}</td> 46 <td><a href="/posts/{{$task->id}}">{{$task->content}}</a></td> 47 <td>{{$task->due_time}}</td> 48 <td>{{$task->status}}</td> 49 <td>{{$task->time}}時間</td> 50 <td><a href="posts/{{ $task->id }}/edit" class="btn btn-success">編集️</a></td> 51 <td> 52 <form method="post" action="{{ action('PostController@destory', $task->id) }}" id="delete_{{ $task->id}}" > 53 @csrf 54 @method('DELETE') 55 <button type="submit" class="btn btn-danger" onclick="return confirm('本当に削除しますか?');">削除</button> 56 </form> 57 </td> 58 </tr> 59 </tbody> 60 @endforeach 61 </table> 62 </div> 63 </div> 64 </div> 65 </div> 66 </div> 67 </div> 68 </div> 69 </main> 70 </body> 71</html> 72@endsection

Task.php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6use Illuminate\Database\Eloquent\SoftDeletes; 7class Task extends Model 8{ 9 use SoftDeletes; 10 public function user() 11 { 12 return $this->belongsTo('App\User'); 13 } 14 public function category() 15 { 16 return $this->belongsTo('App\Category'); 17 } 18 19 20 protected $fillable = [ 21 'user_id', 22 'category_id', 23 'content', 24 'due_time', 25 'status', 26 'time', 27 ]; 28} 29

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問