即使 children 不存在,如何获取 Parent 数据?
How to get Parent data even if children are not present?
我想从嵌套资源控制器中检索 parent 列。如果嵌套控制器至少有一行,我可以轻松检索 parent。但是如果嵌套控制器没有行,我怎样才能得到 parent object?
解释一下:
/* I have two routes: */
Route::resource('articles', 'ArticleController');
Route::resource('articles.images', 'ArticleImageController');
ArticleImage模型有这个功能:
public function article() {
return $this->belongsTo('App\Article');
}
这是我获取数据的方式:
/* www.site.com/articles/1/images */
public function index($id) {
//
$data['images'] = ArticleImage::where('article_id', $id);
// to get parent data, I can call
$article = $data['images'][0]->article();
}
问题是,如果没有图像。那我怎样才能得到parent篇文章object呢?因为我想在图片页面上显示它的名字。
此方法使用文章 ID,而不是图片 ID:
/* www.site.com/articles/1/images */
public function index($id) {
//
$data['images'] = ArticleImage::where('article_id', $id);
// to get parent data, I can call
$article = $data['images'][0]->article();
}
所以你的文章模型:
public function images() {
// change the name according to your model
return $this->hasMany('App\Images');
}
以及您如何检索图像
/* www.site.com/articles/1/images */
public function index($id) {
// Get the article
$article = Article::with('images')->find($id);
// Here is your article images
$article->images;
}
这是一个粗略的解决方法 - 不是获取 ArticleImage
,而是获取父级 Article
,因为这就是 $id
的用途,并且急切加载 images
关系。这样一来,即使没有 images
.
,您也将始终拥有 $article
的父条目
/* www.site.com/articles/1/images */
public function index($id) {
$article = Article::with('images')->find($id);
$data['images'] = $article->images;
$data['article'] = $article;
return view('my.view', $data);
}
如果您将 $data
传递给它,您将可以在您的视图中访问 $article
。
更新
我意识到这种方法与@Iamzozo 的回答几乎相同。
我想从嵌套资源控制器中检索 parent 列。如果嵌套控制器至少有一行,我可以轻松检索 parent。但是如果嵌套控制器没有行,我怎样才能得到 parent object?
解释一下:
/* I have two routes: */
Route::resource('articles', 'ArticleController');
Route::resource('articles.images', 'ArticleImageController');
ArticleImage模型有这个功能:
public function article() {
return $this->belongsTo('App\Article');
}
这是我获取数据的方式:
/* www.site.com/articles/1/images */
public function index($id) {
//
$data['images'] = ArticleImage::where('article_id', $id);
// to get parent data, I can call
$article = $data['images'][0]->article();
}
问题是,如果没有图像。那我怎样才能得到parent篇文章object呢?因为我想在图片页面上显示它的名字。
此方法使用文章 ID,而不是图片 ID:
/* www.site.com/articles/1/images */
public function index($id) {
//
$data['images'] = ArticleImage::where('article_id', $id);
// to get parent data, I can call
$article = $data['images'][0]->article();
}
所以你的文章模型:
public function images() {
// change the name according to your model
return $this->hasMany('App\Images');
}
以及您如何检索图像
/* www.site.com/articles/1/images */
public function index($id) {
// Get the article
$article = Article::with('images')->find($id);
// Here is your article images
$article->images;
}
这是一个粗略的解决方法 - 不是获取 ArticleImage
,而是获取父级 Article
,因为这就是 $id
的用途,并且急切加载 images
关系。这样一来,即使没有 images
.
$article
的父条目
/* www.site.com/articles/1/images */
public function index($id) {
$article = Article::with('images')->find($id);
$data['images'] = $article->images;
$data['article'] = $article;
return view('my.view', $data);
}
如果您将 $data
传递给它,您将可以在您的视图中访问 $article
。
更新
我意识到这种方法与@Iamzozo 的回答几乎相同。