laravelを学習中の者です。
以下のコードにつきまして、お聞きしたい部分があります。
以下はビュー部分の「index.blade.php」です
php
1@extends('layouts.helloapp') 2 3@section('title','Person.index') 4 5@section('menubar') 6 @parent 7 インデックスページ 8 9@endsection 10 11@section('content') 12 <table> 13 <tr><th>Data</th></tr> 14 @foreach ($items as $item) 15 16 <tr> 17 <td>{{$item}}</td> 18 <td>{{$item->getData()}}</td> 19 </tr> 20 @endforeach 21 </table> 22@endsection 23 24@section('footer') 25copyright 2017 tuyano. 26@endsection
以下は、モデルクラスである「Person.php」です
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Person extends Model 8{ 9 public function getData() 10 { 11 return $this->id . ':' . $this->name . '(' . $this->age . ')'; 12 } 13 14} 15
以下はコントローラー部分である、「PersonController.php」です
php
1<?php 2 3namespace App\Http\Controllers; 4use App\Person; 5use Illuminate\Http\Request; 6 7class PersonController extends Controller 8{ 9 public function index(Request $request) 10 { 11 $items = Person::all(); 12 // if($items instanceof Person){ 13 // die('ok'); 14 // }else{ 15 // die('ng'); 16 // } 17 18 // var_dump(get_object_vars($items)); 19 // exit(); 20 return view('person.index',['items' => $items]); 21 22 } 23} 24
以下はルート部分である、web.phpです
php
1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14 15// Route::post('hello','HelloContoroller@post'); 16 17//use App\Http\Middleware\HelloMiddleware; 18 19Route::get('hello/add','HelloController@add'); 20Route::post('hello/add','HelloController@create'); 21 22Route::get('hello','HelloController@index'); 23 24Route::get('hello/edit','HelloController@edit'); 25Route::post('hello/edit','HelloController@update'); 26 27Route::get('hello/del','HelloController@del'); 28Route::post('hello/del','HelloController@remove'); 29Route::get('hello/show','HelloController@show'); 30Route::get('person','PersonController@index'); 31Route::get('test','HelloController@foo'); 32
上記、http://localhost/personとアクセスしますと以下の画面が表示されます。
お聞きしたい部分なのですが、index.blade.php内の「$item」が何故getDataを呼び出せるのか、といった点です。
$items = Person::all()にて、全レコードをCollectionインスタンスとして得られる所までは理解できますが、何故、getDataメソッドが呼ぶことができるのでしょうか?
求める回答が得られないと判断した為、スタックオーバーフローの方にも投稿しました。
投稿したサイト
