gpt4 book ai didi

php - 如何显示与表单输入匹配的某些类别的文章 - Laravel

转载 作者:行者123 更新时间:2023-11-29 21:46:00 25 4
gpt4 key购买 nike

我无法根据类别限制我的搜索/显示我的结果。

我有多对多关系。一篇文章有​​很多分类,一个分类有很多文章。用户在表单中输入地址并选择 1-3 个类别。然后,我希望将这些用户指定的类别与我的数据库中具有这些类别的文章进行匹配,并且仅显示这些特定的文章。

我一直在看很多这样的问题,例如 THIS ONE似乎无法让事情发挥作用。我的主要错误是我得到了 $categories 的未定义属性。

在我添加类别内容之前,它正在工作,我可以显示一定距离内的文章列表。我正在使用 Laravel 5.1。

数据库表:‘文章’(ID、标题等...)“类别”(身份证号、姓名)'文章类别'(文章_id,类别_id)

这是我的代码:

文章模型:

    public function categories()
{
return $this->belongsToMany('App\Category')->withTimestamps();
}

public function getCategoryListAttribute()
{
return $this->categories->lists('id')->all();
}

类别模型:

    public function articles()
{
return $this->belongsToMany('App\Article')->withTimestamps();
}

文章 Controller

public function index(Request $request)
{

$lat = $request->get('lat');
$lng = $request->get('lng');
<--! THIS GETS THE USER DEFINED CATEGORY CHOICES -->
$categoryChoice = $request->get('categoryList');
$distance = 1;

$query = Article::getByDistance($lat, $lng, $distance);

if(empty($query)) {
return redirect()->action('HomeController@index');
}

$ids = [];

//Extracts the alticle/store id's
foreach($query as $q)
{
array_push($ids, $q->id);
}

<--! Get the listings that match the returned ids -->
$results = DB::table('articles')
->whereIn( 'id', $ids)
->orderBy('title', 'DESC')
->paginate(6);

$articles = $results;

<--! THIS IS TO GET CATEGORY IDS OF NEARBY STORES - NOT WORKING ->
$categoryMatches = [];

foreach ($articles->categories as $category){

array_push($categoryMatches, $category->pivot->category_id);

}

<--! THIS WILL IDENTIFY WHETHER THE CATEGORIES OF NEARBY STORES MATCH THE CATEGORIES CHOSEN IN THE FORM - NOT WORKING -->
$articles = $articles->whereIn($categoryMatches, $categoryChoice);

return view('articles.index', compact('categories', 'days'))->withArticles($articles);

}

最佳答案

您的查询返回文章集合。您需要首先迭代文章,因为每篇文章都有很多类别。

foreach ($articles as $article){

//get the article's categories ids
$article->categories->lists('id');

}

关于php - 如何显示与表单输入匹配的某些类别的文章 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34112579/

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