gpt4 book ai didi

php - 获取数据行但相关表行数有限

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:39 27 4
gpt4 key购买 nike

我正在尝试在 Laravel 中创建我的第一个项目。我有表 urlsreviews,每个 url 都有很多评论。在索引 View 中,我想列出所有 url 及其最新的 2 条评论。

模型网址

public function reviews()
{
return $this->hasMany('App\Review');
}

模型审核

public function url()
{
return $this->belongsTo('App\Url');
}

类 UrlController

class UrlController extends Controller
{
public function index()
{

// here I would need to get all urls with latest two reviews for each url
$urls = URL::all();
return view('urls.index')->with('urls', $urls);

}
}

查看索引

   @foreach ($urls as $url)
<li>

// Echo url name
{{ $url->url }}

// Here I need to list 2 reviews
// Something like...
@foreach ($url->reviews as $review)
$review->text
@endforeach

</li>
@endforeach

我的代码通常设置正确吗?

1.try - UrlController 中的这段代码适用于 url,而不是它的评论。

$urls = URL::with('reviews')->orderBy('created_at')->take(2)->get();

2.尝试此代码将限制所有获取评论的数量,在这种情况下,只有第一个 url 会收到评论,而其他 url 将为零。

 $urls = URL::with([
'reviews' => function($q){
$q->orderBy('created_at', 'asc');
$q->limit(2);
}
])->get();

最佳答案

在您的模型中添加范围:

public function scopeLatestFirst($query)
{
return $query->orderBy('created_at', 'asc')->limit(2);
}

然后调用:

@foreach ($url->reviews()->latestFirst()->get() as $review)
$review->text
@endforeach

More about scopes

关于php - 获取数据行但相关表行数有限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41039498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com