如何将数据从SelectHTML标记存储到DB并显示…Laravel

如何将数据从SelectHTML标记存储到DB并显示…Laravel,laravel,Laravel,拉维尔 我有三张桌子 1-用户=>id+姓名+电子邮件+密码 2-类别=>id+名称 3-类别用户=>用户id+类别id 我希望用户选择他们喜欢的类别,以便只显示该类别的文章 此处显示要选择类别的页面: <div class="form-group"> <label for="body">Category</label> <select name="categories[]

拉维尔

我有三张桌子

1-用户=>id+姓名+电子邮件+密码

2-类别=>id+名称

3-类别用户=>用户id+类别id

我希望用户选择他们喜欢的类别,以便只显示该类别的文章

此处显示要选择类别的页面:

<div class="form-group">
        <label for="body">Category</label>
        <select name="categories[]" id="" multiple>
            @foreach ($categories as $category)
            <option value="{{$category->id}}">{{$category->name}}</option>
            @endforeach
        </select>

类别
@foreach($categories作为$category)
{{$category->name}
@endforeach
如何将此数据存储在category_user表中?(带验证)


另外,如何仅显示属于所选类别的文章?

如果您在controller中转储并删除请求数据,您将看到类别作为一个数组。您可以通过foreach循环迭代类别,并将其保存到category_用户表中。不要忘记使用当前用户id作为用户id

foreach ( $request->categories as $categoryId ) {
    CategoryUser::create( [ 'user_id' => auth()->user()->id, 'category_id' => $categoryId ] )
}

对于显示,您需要有关articles表的更多信息。一篇文章属于一个类别还是多个类别?

您想针对特定用户保存多个类别,因为此名称属性意味着
name=“categories[]”
。这很简单,循环使用$request->categories并针对用户保存。要查看文章,您想使用Elount还是query builder?这不重要,重要的是解决问题Hassan MalikI尝试了此解决方案,但我面临一个问题(未定义类型“App\Http\Controllers\CategoryUser”)我应该用这个名字建立模型吗?(类别用户)或(类别用户)?关于您的问题:文章属于多个类别?是的,您可以创建一个CategoryUser模型,也可以执行db查询以在该表上插入。好的,谢谢,关于仅显示属于所选类别的文章的内容对于特定类别的文章,请定义模型关系并使用Where Has对关系进行筛选。类似这样的
Article::whereHas('categories',function($q)use($catIds){$q->where('id',$catIds);})->get()