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

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

在 laravel 中顯示數據庫中的一張圖像

在 laravel 中顯示數據庫中的一張圖像

PHP
SMILET 2023-05-26 09:25:30
我在 Laravel 中有兩張桌子惹蘭斯jalan_images在一個 id_jalan 中可以有很多圖像,我的關系是這樣的街頭模特// Model Jalanpublic function jalanImage(){    // return $this->hasMany('App\JalanImage', 'id_jalan');    return $this->hasMany(JalanImage::class, 'id_jalan');}public function firstImage(){    // return $this->hasOne('App\JalanImage', 'id_jalan');    return $this->hasOne(JalanImage::class, 'id_jalan');}模特街景// Model JalanImagepublic function jalan(){    // return $this->belongsTo('App\Jalan', 'id_jalan', 'id');    return $this->belongsTo(Jalan::class, 'id_jalan', 'id');}我想在我的控制器中顯示標題、created_at 和每個 id_jalan 中的第一張圖像等數據,以顯示這樣的數據路徑控制器// JalanControllerpublic function jalan(){    $jalan  = Jalan::with('firstImage')->orderBy('created_at', 'DESC')->get();    return view('jalan.all', ['jalan' => $jalan]);    // dd($jalan->toArray());}在我看來,每個 id_jalan 的第一張圖片沒有顯示,我的看法是這樣的葉片視圖@foreach($jalan as $row)   <div class="post-item clearfix">       <table border="0">          <tr>            <td width="170px">               <a href="#">                  <img src="{{ asset('uploads/jalan/' .$row->first_image) }}" alt="" class="img-fluid" width="150px"></td>               </a>               <td>                  <h4><a href="#">{{ $row->title }}</a></h4>                  <i class="icofont-wall-clock"></i> <time>{{ date('d F Y', strtotime($row->created_at)) }}</time>                   <p style="color: #F3591F">{{ $row->category }}</p>                </td>             </tr>           </table>         </div>  @endforeach當我用dd($jalan->toArray());顯示它時 在我的控制器中,顯示了 first_image。如何解決?謝謝
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

您應該遵循 Laravel(尤其是 Eloquent)關于命名約定的建議和最佳實踐。這意味著你的gallery_images表應該有gallery_id字段而不是你在那里的內容。信不信由你,那樣你會跳過很多非受迫性錯誤和問題。我將讓您回答我將如何代替您:


// \App\Gallery::class

class Gallery extends Model

{

    public function galleryImages()

    {

        return $this->hasMany(GalleryImage::class);

    }


    public function firstGalleryImage()

    {

        return $this->hasOne(GalleryImage::class);

    }

}


// \App\GalleryImage::class

class GalleryImage extends Model

{

    public function gallery()

    {

        return $this->belongsTo(Gallery::class);

    }

}

基本上,您可以根據需要在模型中設置返回特定關系的方法。在Gallery::class這里,您可以看到我已經設置了一個關系,它將只返回該畫廊的第一張圖片。在控制器中你會調用它


public function someControllerMethod()

{

    $gallery = Gallery::with(['firstGalleryImage'])->first();

    // or

    $galleries = Gallery::with(['firstGalleryImage'])->get();

}

現在返回的對象$gallery或集合$galleries將只攜帶第一張圖像相關。在您的情況下(如果您不想更改字段名稱),您需要遵循有關如何將另一個模型的鍵設置為方法參數的文檔。


查看完整回答
反對 回復 2023-05-26
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

你可以使用 Laravel 的 Eloquent ORM(Eager Loading),這里是一個單一圖像(圖像)和多個圖像(媒體)關系的例子。


    public function media()

    {

        return $this->hasMany(Media::class, 'foreign_key', 'local_key');

    }


    public function defaultMedia()

    {

        return $this->hasOne(Media::class, 'foreign_key', 'local_key');


    public function image()

    {

        return $this->defaultMedia();

    }


查看完整回答
反對 回復 2023-05-26
  • 2 回答
  • 0 關注
  • 192 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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