2016-12-01 40 views
1

我有下面的代碼,通過ID獲取的圖像:Laravel,更好的方式來鏈接到圖片

//concertscontroller 

    foreach($concerts as $concert){ 
     $concert->image = Image::find($concert->image_id); 
    } 

從這個模型

namespace App; 
use Illuminate\Database\Eloquent\Model; 

/** 
* @property string path 
* @property string name 
* @property string alt 
* @property string caption 
* @property int width 
* @property int height 
*/ 
class Image extends Model 
{ 
    // 
} 

抓起 -

/** 
* @property string name 
* @property string address_1 
* @property string address_2 
* @property string address_3 
* @property float(10,6) coordinates 
* @property string copy 
* @property int imageId 
* @property string ticket_link 
* @property string info_link 
* @property DateTime datetime 
*/ 

class Concerts extends Model 
{ 
    /** 
    * @return \Illuminate\Database\Eloquent\Relations\HasOne 
    */ 
    public function image() 
    { 
     return $this->hasOne('App\Image','id','imageId'); 
     //I don't think this does anything 
    } 
} 

我不記得我剛纔寫的,但我認爲hasOne關係應該允許我使用一些Laravel外觀來獲得圖像自動。有誰知道如何做到這一點?如果我正在做這件事,請告訴我!

+0

它不是'return $ this-> hasOne('App \ Image','id','imageId');'應該是:'return $ this-> hasOne('App \ Image');' – GabMic

+0

這也取決於你的數據庫,並且你有你的外鍵設置。 – CUGreen

回答

1
foreach($concerts as $concert){ 
     $concert->image = Image::find($concert->image_id); 
    } 

-

namespace App; 
    use Illuminate\Database\Eloquent\Model; 

    class Image extends Model 
    { 
      public function concerts() 
     { 
      return $this->belongsTo('App\Concerts'); 
     } 
    } 

-

class Concerts extends Model 
    { 
     /** 
     * @return \Illuminate\Database\Eloquent\Relations\HasOne 
     */ 
     public function image() 
     { 
      return $this->hasOne('App\Image','id','imageId'); 
      //I don't think this does anything 
     } 
    } 

這應招後,加入屬於關聯關係。

+0

這是一個圖像可以屬於幾個其他類的情況嗎? – userqwert

+0

這種情況下,iy woll屬於您在函數中定義的一個類。如果你想了解其他關係,你可以說belongsToMany。 – GabMic