laravelのModelを使ってデータベースのデータを取りに行きたいのですが、
モデル名以外のテーブルを見に行ってしまいます。
下記のようなコードでモデルを使いデータベースにアクセスしています。
見に行きたいテーブル名は【persons】です。
Controller
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Person; 7 8class PresonController extends Controller 9{ 10 public function index(Request $request){ 11 $items = Person::all(); 12 13 return view('person.index',['items' => $items]); 14 } 15} 16
Model
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Person extends Model 8{ 9 // 10} 11
views
1<!doctype html> 2<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 7 <title>Laravel</title> 8 9 <!-- Fonts --> 10 <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet"> 11</head> 12<body> 13<div> 14 <table> 15 <tr> 16 <th>name<td> 17 <th>mail<td> 18 <th>age<td> 19 </tr> 20 @foreach($items as $item) 21 <tr> 22 <td>{{$item->name}}<td> 23 <td>{{$item->mail}}<td> 24 <td>{{$item->age}}<td> 25 </tr> 26 @endforeach 27 </table> 28</div> 29</body> 30</html> 31
しかし、ブラウザで確認すると下記のようなエラーメッセージが表示されます。
どこにも【people】というテーブルを指定していないのですが、出てきます。
仕方ないので下記のようにModel内でテーブルを指定すると問題なく
希望のテーブルを読み込んでくれます
Model
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Person extends Model 8{ 9 protected $table = 'persons'; 10 11} 12
Model内でテーブル名を指定すれば問題ないのかもしれませんが、
スッキリしません。
お忙しい中申し訳ございませんが、教えて頂けましたら幸いです。
何卒、よろしくお願いいたします。
開発環境は下記です。
Laravel Framework 5.7.28
mysql Ver 8.0.18 for osx10.13 on x86_64 (Homebrew)
Server version: Apache/2.4.41 (Unix)
Server built: Sep 8 2019 04:59:59
//情報を追加いたします。
ルーティング一覧
アクセスURL
http://127.0.0.1:8000/person
回答4件
あなたの回答
tips
プレビュー