【发布时间】:2022-01-07 02:27:52
【问题描述】:
应用\模型\地点:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Venue extends Model
{
use HasFactory;
protected $fillable = ['title', 'user_id', 'category_id', 'phone', 'address', 'content'];
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
public function category()
{
return $this->belongsTo(Category::class, 'category_id');
}
public function city()
{
return $this->belongsTo(City::class, 'city_id');
}
public function features()
{
return $this->belongsToMany(Feature::class, 'venue_feature');
}
}
StoreVenueRequest(规则部分):
public function rules()
{
return [
'category_id' => 'required|integer',
'title' => 'required|min:3',
'city' => 'required|integer',
'address' => 'required',
'phone' => 'nullable|integer',
'email' => 'nullable|email',
'content' => 'required|min:10',
'features' => 'required|min:3'
];
}
VenueController - store() 方法:
public function store(StoreVenueRequest $request)
{
$venue = new Venue();
$validated = $request->validated();
$validated['user_id'] = auth()->id();
$venue->create($validated);
dd($venue);
}
他的代码运行良好,但我不确定这是最好的方法。有没有办法避免这两行,主要是第二行:
$validated = $request->validated();
$validated['user_id'] = auth()->id();
我唯一能想到的是表单中带有经过身份验证的用户 ID 的隐藏输入字段。我正在寻找最好的方法。
【问题讨论】:
-
@lagbox 但它看起来更像是 hack,而不是 Laravel 方式