LaravelのversionとしてはLaravel Framework 8.27.0を使っています。
Userとしてログインし、情報を入力して、それをBoardに保存して、検索によって、そのBoardの情報を取り出すことができる様なアプリを作ろうとしております。
Boardモデルの新規保存(add/create)の機能を実装しようと思っておりますが、UserとリレーションのあるBoard情報の有無によって表示する内容を変えたいと思い、add.blade.phpに@ifによる場合分けを用意しましたが、なぜか$boardが空配列の時も@else以下を表示してしまいます。
なぜでしょうか?
わかる方がいらっしゃれば教えていただきたいです。
(ちなみに、$boardはnullではないです。@if (is_array($board) && !$board)も試しましたが、ダメでした。。。)
View↓
(add.blade.phpの@section('content')ディレクティブ)
add
1@section('content') 2 @if (empty($board)) 3 <div class="container"> 4 <table> 5 <form action="/board/add" method="post"> 6 {{ csrf_field() }} 7 <input type="hidden" name="id"> 8 <div class="a_form"> 9 <label>info_1 : </label> 10 <input type="text" name="info_1"> 11 </div> 12 <div class="a_form"> 13 <label>info_2 : </label> 14 <input type="text" name="info_2"> 15 </div> 16 <div class="a_form"> 17 <label>info_3 : </label> 18 <input type="text" name="info_3"> 19 </div> 20 <div class="a_form"> 21 <label>info_4 : </label> 22 <input type="text" name="info_4"> 23 </div> 24 <div class="a_form"> 25 <label>info_5 : </label> 26 <input type="text" name="info_5"> 27 </div> 28 <div class="a_form"> 29 <input type="submit" value="送信する"> 30 </div> 31 </form> 32 </table> 33 </div> 34 @else 35 <div class="container"> 36 <a class="button" href="/board/edit">入力情報を修正する</a> 37 <a class="button" href="/board/del">入力情報を削除する</a> 38 </div> 39 @endif 40@endsection
Controller↓
BoardController
1<?php 2 3namespace App\Http\Controllers; 4 5use App\Models\Board; 6use App\Models\User; 7use Illuminate\Http\Request; 8use Illuminate\Support\Facades\Auth; 9 10class BoardController extends Controller 11{ 12 public function add(Request $request) 13 { 14 $user = Auth::user(); 15 $board = Board::with('user')->get(Auth::id()); 16 $param = ['user' => $user, 'board' => $board]; 17 return view('board/add', $param); 18 } 19 20 public function create(Request $request) 21 { 22 $this->validate($request, Board::$rules); 23 $board = new Board; 24 $board->user_id = Auth::id(); 25 $form = $request->all(); 26 unset($form['_token']); 27 $board->fill($form)->save(); 28 return redirect('/board'); 29 }
Models↓
User
1<?php 2 3namespace App\Models; 4 5use Illuminate\Contracts\Auth\MustVerifyEmail; 6use Illuminate\Database\Eloquent\Factories\HasFactory; 7use Illuminate\Foundation\Auth\User as Authenticatable; 8use Illuminate\Notifications\Notifiable; 9 10class User extends Authenticatable 11{ 12 use HasFactory, Notifiable; 13 14 /** 15 * The attributes that are mass assignable. 16 * 17 * @var array 18 */ 19 protected $fillable = [ 20 'name', 'email', 'password', 21 ]; 22 23 /** 24 * The attributes that should be hidden for arrays. 25 * 26 * @var array 27 */ 28 protected $hidden = [ 29 'password', 'remember_token', 30 ]; 31 32 /** 33 * The attributes that should be cast to native types. 34 * 35 * @var array 36 */ 37 protected $casts = [ 38 'email_verified_at' => 'datetime', 39 ]; 40 41 protected $guarded = array('id'); 42 43 public function boards() 44 { 45 return $this->hasMany('App\Models\Board'); 46 } 47}
Board
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7 8class Board extends Model 9{ 10 protected $guarded = array('id'); 11 12 public static $rules = array( 13 'info_1' => 'required', 14 'info_2' => 'required', 15 'info_3' => 'required', 16 'info_4' => 'required', 17 'info_5' => 'required', 18 ); 19 20 public function user() 21 { 22 return $this->belongsTo('App\Models\User'); 23 } 24}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/09 12:34
2021/03/09 13:02
2021/03/09 13:08
2021/03/09 14:02
2021/03/09 16:31
2021/03/09 19:51
2021/03/10 06:48
2021/03/10 07:43
2021/03/10 10:23 編集