【发布时间】:2021-11-03 07:49:18
【问题描述】:
我想使用连接将数据保存到我的 SQL 表中。我有 3 张桌子。 vehicle、smsstaff 和 vehicleslog。 vehicle 和 smsstaff 加入 vehicleslog,这样我就可以将汽车和工作人员的名称添加到他们的下拉列表中。然后它将对应名称的 ID 存储在 vehicleslog 表中,并在索引中返回名称:
VehicleLog 模型:
<?php
namespace App\Models\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class VehicleLog extends Model
{
public $timestamps = false;
protected $table = 'vehicleslog';
protected $primaryKey = 'id';
protected $dates = ['date'];
protected $guarded = ['id'];
use HasFactory;
}
维护控制器:
class MaintenanceController extends Controller
{
public function index()
{
// $energy = Maintenance::orderBy('id', 'desc')->paginate(5);
$energy = VehicleLog::join('vehicle', 'vehicleslog.vehicle_id', '=', 'vehicle.id')
->join('smsstaff', 'vehicleslog.smsstaff_key', '=', 'smsstaff.smsstaff_key')
->get();
$cars = Vehicle::get();
$staff = Staff::all();
return view('admin.vmaintenance', compact('energy', 'cars', 'staff'));
}
public function store(Request $request)
{
// $energy = new Maintenance;
$energy = VehicleLog::join('vehicle', 'vehicleslog.vehicle_id', '=', 'vehicle.id')
->join('smsstaff', 'vehicleslog.smsstaff_key', '=', 'smsstaff.smsstaff_key')
->first();
$cars = Vehicle::all();
$staff = Staff::get();
$energy->smsstaff_key = $request->input('smsstaff_key');
$energy->vehicle_id = $request->input('vehicle_id');
$energy->log_dt = $request->input('log_dt');
$energy->admin_time = $request->input('admin_time');
$energy->driving_time = $request->input('driving_time');
$energy->work_time = $request->input('work_time');
$energy->jobcard_count = $request->input('jobcard_count');
$energy->start_odo = $request->input('start_odo');
$energy->end_odo = $request->input('end_odo');
$energy->save();
return redirect('/vmaintenance')->with('success', 'data added');
}
}
查看:
<div>
<label>Select Staff</label>
<select name="smsstaff_key" >
@foreach($staff as $staffs)
<option value="{{ $staffs->smstaff_key }}">{{ $staffs['name'] }}</option>
@endforeach
</select>
</div>
<div>
添加车辆时效果很好,但通过下拉添加人员返回a,"Attempt to assign property "smsstaff_key" on null"
【问题讨论】:
-
$energy为空,请检查查询。在尝试更改变量之前,您应该始终检查变量是否不为空。 -
@GertB。我应该让它不为空吗?
-
取决于您想要的功能。现在您尝试编辑现有的`VehicleLog,但在您的数据库中找不到它。
-
我让它不为空,但它仍然给出同样的错误@GertB。
-
你是如何“让它不为空”的?如果您收到错误“尝试在 null 上分配属性“smsstaff_key””,则为 null。
标签: php mysql laravel eloquent laravel-8