2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
您應(yīng)該遵循 Laravel(尤其是 Eloquent)關(guān)于命名約定的建議和最佳實(shí)踐。這意味著你的gallery_images表應(yīng)該有g(shù)allery_id字段而不是你在那里的內(nèi)容。信不信由你,那樣你會(huì)跳過很多非受迫性錯(cuò)誤和問題。我將讓您回答我將如何代替您:
// \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);
}
}
基本上,您可以根據(jù)需要在模型中設(shè)置返回特定關(guān)系的方法。在Gallery::class這里,您可以看到我已經(jīng)設(shè)置了一個(gè)關(guān)系,它將只返回該畫廊的第一張圖片。在控制器中你會(huì)調(diào)用它
public function someControllerMethod()
{
$gallery = Gallery::with(['firstGalleryImage'])->first();
// or
$galleries = Gallery::with(['firstGalleryImage'])->get();
}
現(xiàn)在返回的對象$gallery或集合$galleries將只攜帶第一張圖像相關(guān)。在您的情況下(如果您不想更改字段名稱),您需要遵循有關(guān)如何將另一個(gè)模型的鍵設(shè)置為方法參數(shù)的文檔。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可以使用 Laravel 的 Eloquent ORM(Eager Loading),這里是一個(gè)單一圖像(圖像)和多個(gè)圖像(媒體)關(guān)系的例子。
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();
}
- 2 回答
- 0 關(guān)注
- 191 瀏覽
添加回答
舉報(bào)