如何将数据从选择的 html 标签存储到数据库并显示它...Laravel
Posted
技术标签:
【中文标题】如何将数据从选择的 html 标签存储到数据库并显示它...Laravel【英文标题】:How to Store Data from select html tag to DB and display it...Laravel 【发布时间】:2021-06-20 22:08:34 【问题描述】:Laravel
我有 3 张桌子
1- 用户 => id + 姓名 + 电子邮件 + 密码
2- 类别 => id + 名称
3- category_user => user_id + category_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>
如何将这些数据存储在 category_user 表中? (带验证)
另外,我怎样才能只显示属于所选类别的文章?
【问题讨论】:
您希望针对特定用户保存多个类别,因为此名称属性暗示name="categories[]"
。这很简单,遍历 $request->categories 并将其保存在用户面前。
查看文章你想使用 eloquent 还是 query builder?
没关系,重要的是解决问题哈桑马利克
【参考方案1】:
如果您在控制器中转储并删除您的请求数据,您会将类别视为一个数组。您可以通过 foreach 循环遍历类别并将其保存到 category_user 表。不要忘记使用当前用户 id 作为 user_id。
foreach ( $request->categories as $categoryId )
CategoryUser::create( [ 'user_id' => auth()->user()->id, 'category_id' => $categoryId ] )
为了显示需要更多关于文章表的信息。一篇文章属于一个类别还是多个类别?
【讨论】:
我尝试了这个解决方案,但我遇到了一个问题(未定义类型'App \ Http \ Controllers \ CategoryUser)我应该用这个名称构建模型吗? (CategoryUser) 还是 (Category_User)?关于你的问题:文章属于很多类别? 是的,您可以创建一个 CategoryUser 模型,或者您可以执行数据库查询以插入该表。 好的,谢谢,关于只显示属于所选类别的文章 对于特定类别的文章,定义模型关系并使用 whereHas 对关系进行过滤。像这样Article::whereHas( 'categories', function ( $q ) use ( $catIds ) $q->whereIn('id', $catIds); )->get();
以上是关于如何将数据从选择的 html 标签存储到数据库并显示它...Laravel的主要内容,如果未能解决你的问题,请参考以下文章
如何将 html 标签从 sql server 数据库显示到 html 页面?