早上好,我在Eloquent的模型關係上遇到了一些麻煩,我需要鏈接那些具有中間表的文章和圖像。在中間表中,我想添加文章和圖片的ID,並且我想檢索屬於文章的所有圖片,管理關係的最佳方式是什麼?在此先感謝laravel雄辯中的一對多關係
回答
您可以使用morphMany()
關係(Polymorphic Relationship),以解決您的問題是這樣的:
UPDATE:表結構如下所示:
- articles
- id
- title
- content
- ...
- images
- id
- owner_id
- owner_type (Here there can be - Article, Auction, User, etc)
- name
- mime_type
- ...
多態性關係允許模型屬於多於一個 其他模型上的單個關聯。例如,想象一下 您的應用程序的用戶可以對帖子和視頻進行「評論」。使用 多態關係,可以爲這兩種情況都使用單個註釋表 。
你的車型將是這樣的:
class Article extends Model
{
public function images()
{
return $this->morphMany(Image::class, 'owner');
}
}
class Image extends Model
{
public function owner()
{
return $this->morphTo();
}
}
多個圖像保存到一個文章,你可以這樣做:
$article->images()->create([... inputs_arr ...]);
,並獲取它們,你可以做到這一點像:
$articleImages = Article::find($id)->images;
希望這有助於!
那麼,它如何保存表格上的數據?它在哪裏使數據庫的關係?我在創建模型之前創建了數據庫,因爲我以前正在使用純PHP。感謝:D –
這個案件將會有兩張表格。你的表格結構就像我上面更新的答案中所示。 –
如果我使用與其他模型相關的圖像表,比如說拍賣,用戶等,不會有問題嗎? –
您不需要使用數據透視表,因爲它是one-to-many的關係。
只需使用hasMany()
關係:
public function images()
{
return $this->hasMany('App\Image');
}
然後用eager loading加載所有圖片與文章:
$article = Article::with('images')->where('id', $articleId)->first();
- 1. Laravel雄辯 - 多對一關係
- 2. Laravel雄辯一對多關係
- 3. Laravel 5. * - 雄辯的多對多關係
- 4. Laravel 3雄辯的多對多關係
- 5. Laravel 5.1雄辯多對多關係
- 6. Laravel雄辯的關係(一對一)
- 7. Laravel雄辯關係
- 8. laravel-雄辯關係
- 9. laravel雄辯關係
- 10. 雄辯許多一對多的關係
- 11. Laravel 4雄辯的關係
- 12. Laravel雄辯的關係 - hasOne?
- 13. Laravel與雄辯的關係
- 14. 雄辯的關係(Laravel 5.4)
- 15. Laravel 5.1 - 雄辯的關係
- 16. Laravel,雄辯:從多到許多關係
- 17. 無法刪除記錄中的一對多關係laravel雄辯
- 18. Laravel雄辯一對多
- 19. Laravel和雄辯返回從一個多對多的關係
- 20. Laravel很多層的雄辯關係
- 21. Laravel雄辯的關係多個模型
- 22. Laravel雄辯:從關係
- 23. Laravel雄辯關係問題
- 24. Laravel 5.5雄辯WhenLoaded關係
- 25. Laravel 5.1雄辯關係
- 26. 測試Laravel雄辯關係
- 27. Laravel 4:雄辯和關係
- 28. laravel雄辯排序關係
- 29. Laravel雄辯地與關係
- 30. 與Laravel雄辯關係5.4
https://laravel.com/docs/5.3/eloquent-relationships#one-to-many Laravel有很好的文檔記錄,如果你閱讀文檔,你不需要問這個問題。 – Devon