public function create()
{
$streets = street::get();
return view('dashboard.house.created');
}
public function store(Request $request)
{
$this->validate($request, [
'home_number' => 'required',
'passport' => 'required',
'option_1' => 'required',
'street_id' => 'required',
'option_2' => 'required',
'option_3' => 'required',
'garage' => 'required',
'apartments' => 'required',
's_full' => 'required',
's_life' => 'required',
's_nlife' => 'required',
'status' => 'required',
'year_create' => 'required',
]);
$homes = Houses::query()->create([
'home_number' => $request->get('home_number'),
'passport' => $request->get('passport'),
'option_1' => $request->get('option_1'),
'option_2' => $request->get('option_2'),
'street_id' => $request->get('street_id'),
'option_3' => $request->get('option_3'),
'garage' => $request->get('garage'),
'apartments' => $request->get('apartments'),
's_full' => $request->get('s_full'),
's_life' => $request->get('s_life'),
's_nlife' => $request->get('s_nlife'),
'status' => $request->get('status'),
'year_create' => $request->get('year_create'),
]
);
if ($request->hasFile('image') && $request->file('image')->isValid()) {
$homes->addMediaFromRequest('image')->toMediaCollection('images');
}
我在家里创建时无法填写卡片。街道列表出现,但当您选择一条街道,并进一步填写所有字段时,页面会刷新,无需将数据输入数据库。代码哪里有错误,请告诉我!
更新: 现在我无法访问带有房屋列表的管理面板页面,写道
ErrorException
Attempt to read property "name" on null (View: D:\laravel-tested\project1\resources\views\Dashboard\house\main.blade.php)
错误在这一行突出显示(这是您获得街道和门牌号的地方)。
<td class="w-2/3 py-5">{{$home->street->name}}, {{$home->home_number}}</td>
created.blade.php
<div>
<label for="street">Street</label>
<select name="street_id" class="w-full">
<option selected>Choose street</option>
@foreach($streets as $street)
<option value="{{$street->id}}">{{$street->name}}</option>
@endforeach
</select>
</div>
答案 0 :(得分:2)
您可以在商店方法中验证街道,我假设数据库中的表名为 streets
并且有一个主键 id
$this->validate($request, [
'home_number' => 'required',
//...
'street_id" => 'exists:streets,id',
//...
'year_create' => 'required',
]);
可能 street_id
不存在于您的房屋模型的属性 $fillable
中,并且未设置为 '*'
。
改变你保存模型的方式
$homes = new Houses();
$home->home_number = $request->get('home_number');
$home->passport = $request->get('passport');
$home->option_1 = $request->get('option_1');
$home->option_2 = $request->get('option_2');
$home->street_id = $request->get('street_id');
$home->option_3 = $request->get('option_3');
$home->garage = $request->get('garage');
$home->apartments = $request->get('apartments');
$home->s_full = $request->get('s_full');
$home->s_life = $request->get('s_life');
$home->s_nlife = $request->get('s_nlife');
$home->status = $request->get('status');
$home->year_create = $request->get('year_create');
$home->save();
if ($request->hasFile('image') && $request->file('image')->isValid()) {
$homes->addMediaFromRequest('image')->toMediaCollection('images');
}
或设置在 Houses 类中
protected $fillable = ['*'];