如何在laravel中将用户帖子保存在数据库中?
Posted
技术标签:
【中文标题】如何在laravel中将用户帖子保存在数据库中?【英文标题】:How to save users post in the database in laravel? 【发布时间】:2020-06-08 22:16:41 【问题描述】:我对 Laravel 非常陌生,并且正在从事一个项目。我有一个用户表,类别表(category_id,category_name)和宠物表(id,user_id,category_id,breed,description....)。我怎样才能让用户添加帖子并制作他选择的id和cagtegory_id从选择选项保存在宠物表中的 user_id 和 category_id 中??
【问题讨论】:
你能把你的html和控制器贴出来吗,很简单,但我想先看看你是怎么尝试的 是认证用户还是普通用户(登录用户或者只是一个用户) 我正在寻找很多教程,但无法弄清楚任何东西。这是我的控制器页面类 RehomeController extends Controller public function rehome(Request $show) $breed = $show- >输入(“品种”); $gender = $show->input('gender'); $age = $show->input('年龄'); $颜色= $显示->颜色; $高度 = $显示->高度; $description = $show -> 描述; $健康= $显示->健康;返回视图('posts.blade')->with('breed',$breed); 是登录用户 【参考方案1】:假设您的表单有 category_id、name 等。
试试下面的代码
$pet = new PET_MODEL_NAME;
$pet->user_id = Auth::user()->id;
$pet->category_id = $request->category_id;
$pet->name = $request->name;
$pet->save();
return back()->withSuccess('Pet added success!');
解释
$pet
将调用您的 petModel
您要保存数据的位置;
$pet->user_id
在您的数据库中是 user_id
;
Auth::user()->id
是当前登录的user_id等等
$pet->something(=
之前)表示数据库中的列,(=
之后)表示来自form
的数据提交
【讨论】:
对于类别,我已经通过数据库保存了数据。我的表单包含类别、品种、年龄、身高等字段,我已经从数据库中检索了该类别的数据。跨度> 我说的只是你的宠物桌......你保存的那个类别必须在这个pet
桌子上使用
你能发布你的html(你的表单)
代码太长了,分开贴吧。
要添加图像,我是按照相同的过程还是需要编写比上面的代码更多的代码?【参考方案2】:
在您的 HTML 中:
<form action="/pet-url" method="post">
@csrf
<input type="text" name="pet_name">
<select name="category_id" id="">
<option value="1">Category 1</option>
<option value="2">Category 2</option>
<option value="3">Category 3</option>
</select>
</form>
在您的路线中:
Route::post('/pet-url', 'PetController@store');
在您的控制器中:
public function store(Request $request)
$pet = new Pet;
$pet->user_id = Auth::user()->id;
$pet->category_id = $request->category_id;
$pet->name = $request->pet_name;
$pet->save();
return back()->withSuccess('Pet added success!');
【讨论】:
我收到一个错误“找不到类'App\Http\Controllers\Pet'”use App\Pet
我假设Pet
是您的模型。如果没有,则更改为您的型号名称以上是关于如何在laravel中将用户帖子保存在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章
在laravel [实现过滤器]中将多个表与雄辩和急切的加载一起加入