这是我的关系:
文章:
public function tags(){
return $this->hasMany('App\Models\ATags', 'language_id');
}
语言:
foreach($languages as $language){
$tags[] = $language->tags;
}
在这里,我获得了特定语言的所有标签。我现在想要显示该特定文章的所有语言标签。
$tags1 = $tags->whereHas('articles', function ($query) {
$query->where('id', '=', $article_id);
})->get();
有任何建议我该怎么做?
我尝试了这个但是我收到了错误
public function edit($article_id){
$user = $this->user;
$languages = $this->languages;
$article = Articles::findOrFail($article_id);
$article_trans = $article->translations;
foreach($languages as $language){
$tags = $language->tags;
}
$tags1 = $tags->whereHas('articles', function ($query) {
$query->where('id', '=', $article_id);
})->get();
}
我有两种语言,我想要的是为这两种语言添加标签。
这是我的控制者:
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="form-group">
<label class="form_title">ARTICLE TAGS</label>
<input type="text" name="tags[{{$article_tran->language->code }}]" class="form-control tokenfield" value="{{ $user_tags }}" />
</div>
这是标签的视图:
var paths = xdoc.Descendants("photos").Elements("path").Select(p => p.Value);
答案 0 :(得分:2)
假设您的ATag模型具有关系belongsToMany定义为文章,那么您的距离似乎没有得到article_id的值。
public function edit($article_id){
$user = $this->user;
$languages = $this->languages;
$article = Articles::findOrFail($article_id);
$article_trans = $article->translations;
$tags = [];
foreach($languages as $language){
//because of loop take array of tags
$tags[] = $language->tags()->whereHas('articles', function($query) use($article_id){
$query->where('id', '=', $article_id);
})->get();
}
}
考虑使用($ article_id)whereHas closure和whereHas在调用$ language-&gt;标签时不能使用集合,这些标签返回集合而不是构建器 您还在ATag模型中正确定义了文章关系吗?