

下記エラーで躓いてます。  
どなたかエラー解決への道導を示して下さいませんか。

したい事

[code]

    viewでforeachを利用し各レコードを抽出し、
    さらに抽出したレコードに対しアロー演算子でプロパティを指定して、
    各カラムのデータを取り出したい。
    
[/code]

エラー文

[code]

    Trying to get property 'id' of non-object (View: /var/www/html/resources/views/某/詳細.blade.php)
    
[/code]

存在しない変数のプロパティやnullの値を参照した時に発生するエラー。

該当ファイル  
[詳細.blade.php]

[code]

    <tbody>
    @foreach($某 as $★　←テーブル■■■■esの単数形) 
       <tr>
           <td>{{ $某->id }}</td>
    campactで指定されている某を$某として使用
    
    =>@foreach($某 as $★) の★部分にどの変数を使えばいいのかがわからなくて躓いている
    
[/code]

[某Controller.php]

[code]

    public function show某(int $某Id): View
    {
       $某 = $this->某Service->retrieve某($某Id);
       return view('某.詳細', compact('★★★★'));
    }
    
[/code]

関連ファイル  
[CarInspectionHistory.php]

[code]

    public function 某InspectionHistory(): BelongsTo
    {
       return $this->belongsTo(某::class);
    }
    
[/code]

[web.php]

[code]

    Route::get('/某/詳細/{某_id}', '\App\Http\Controllers\某Controller@show某');
    
[/code]

[某InspectionHistoriesSeeder.php]

[code]

    public function run()
        {
            factory(App\Models\某InspectionHistory::class, 2500)->create();
        }
    
[/code]

試した事  
[1]

[code]

    @foreach($某 as $★)
    の$★の部分を
    ・$★
    ・$★_inspection_histories
    ・$★ID
    ・$★s
    に変えてみたけれど同じエラー
    
[/code]

[2]

[code]

    public function show某(int $某Id): View
    {
       $car = $this->某Service->retrieve某($某Id);
       return view('某.detail', compact('某'));
    }
    の$某を$garsに、compact('某')をcompact('gar')にして、
    @foreach($gars as $gar)で試すも同じエラー
    
[/code]

環境

[code]

    Laravel Framework 5.7.22
    docker 18.09.1
    
[/code]

余裕ある方ご回答願います。


CC BY-SA 4.0
2019-01-29T11:43:58.027
52401
2023-10-04T03:09:56.213
31572
question
php laravel laravel-5
Laravelでviewにデータを渡して、ブラウザに表示させたいが躓いています。


Laravel の view ファイルにおいては、 controller から渡された変数を展開することができます。  
例えば、

[code]

    //@controller : ID $id のデータを取得して view に渡す
    $data = YourDataClass::find($id);
    return view('data.show', compact('data'));
    
[/code]

とした場合、 view ファイル（resorces/views/data/show.blade.php）では

[code]

    //@view
    //controller で compact('data') を渡したので、 $data を使える
    //compact の中の文字列と view での変数名が同じになります
    {{$data}}
    
[/code]

でデータを参照できます。

jazzy coffee さんの例で言うならば（すみません、$某を $bou に変更しています）、

[code]

    //@controller
    public function showBou(int $bouId): View
    {
       $bou = $this->bouService->retrieveBou($bouId);
       return view('bou.show', compact('bou'));
    }
    
[/code]

としておき、

[code]

    //@view
    @foreach($bou as $item) 
       <tr>
           <td>{{ $item->id }}</td>
       </tr>
    @endforeach
    
[/code]

とすれば、 controller にてきちんとデータ $bou が取れている限りは view でもデータを展開できるはずです。

cf1. [[laravel] controllerからviewへの変数の受け渡しとその展開方法（@ryo2132 様による Qiita
記事）](https://qiita.com/ryo2132/items/63ced19601b3fa30e6de)  
cf2. [compact 関数（php.net）](https://www.php.net/manual/ja/function.compact.php)


CC BY-SA 4.0
2019-07-03T08:55:12.917
56349
2019-07-03T08:55:12.917
34957
52401
answer


変数名をbouにしますね  
idは存在していないエラーなので

**bouController.php**

[code]

    public function show($id): View
    {
       $bou = $this->bouService->retrievebou($id);
       return view('bow.detail', compact('bou'));
    }
    
[/code]

**detail.blade.php**

[code]

    <tbody>
    @foreach($bou as $b) 
       <tr>
           <td>{{ $b->id }}</td>
       <tr>
    @endforeach
    </tbody>
    
[/code]

**web.php**

[code]

    Route::get('/bou/detail/{id}', '\App\Http\Controllers\bouController@show');    
    
[/code]

とパラメータの渡し方を調整したら上手く行けると思います


CC BY-SA 4.0
2019-10-31T02:59:53.740
60152
2019-10-31T02:59:53.740
35461
52401
answer