亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel Eloquent ORM 一對多關系,從兩個表中選擇

Laravel Eloquent ORM 一對多關系,從兩個表中選擇

PHP
至尊寶的傳說 2023-08-11 17:40:51
我有兩個網上商店的 mySQL 表:產品(列:id 等)圖片(列:id、product_id、文件路徑等...)產品表中的任何產品都可能有無限數量的圖片!因此,我的產品模型如下所示:class Product extends Model{    public function pictures()    {        return $this->hasMany('App\Picture');    }}我的圖片模型如下所示:class Picture extends Model{    //}現在,我嘗試列出所有產品及其相應的圖片數據集。我嘗試運行多個代碼。但是,以下代碼都不起作用:\App\Product::pictures()->get()不起作用!顯示此錯誤:Non-static method App\Product::pictures() should not be called statically我還嘗試了一些其他方法,例如\App\Product::with('pictures')->get());錯誤:Trying to get property 'filepath' of non-object (View: /home/vagrant/testproject/resources/views/products.blade.php)備注:Filepath是一列圖片。我試圖在刀片中訪問它,如下所示:{{$products->picture->filepath}}我現在在這個小事情上工作了幾個小時 - 但我只是不明白我做錯了什么?非常感謝任何幫助!感謝你們!
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

您正在做的事情有兩個潛在的問題。

  1. 你正在使用{{$products->picture->filepath}},所以我假設你正在做類似的事情:

$products = \App\Product::with('pictures')->get());

$products是模型的集合Product。該集合沒有屬性picture。

  1. 您正在循環瀏覽類似的產品

@foreach($products as $product)

    {{$product->picture->filepath}}

@endforeach

除非每個產品都有圖片,否則可能會導致您所說的錯誤。如果產品沒有圖片,那么您將在 null 上調用 filepath。您可以通過多種方式解決這個問題,我將在下面列出一種:


@foreach($products as $product)

    @if(!empty($product->picture))

        {{$product->picture->filepath}}

    @endif

@endforeach

正如OP在下面的評論中指出的那樣,根本問題是這種關系有很多。所以要使用圖片你應該這樣做:


@foreach($products as $product)

    @foreach($product->pictures as $picture)

        {{$picture->filepath}}

    @endforeach

@endforeach


查看完整回答
反對 回復 2023-08-11
  • 1 回答
  • 0 關注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號