【发布时间】:2021-10-19 04:58:10
【问题描述】:
我是 Laravel 的新手,我正在制作一个表格来记录用户当天的驾驶活动。我有 2 张桌子。一张vehicle 表和我的主要vehiclelog 表。 vehicle 表应包含有关车辆的详细信息列表。在我的主 (vehiclelog) 表单中,用户必须输入一个名称,然后从下拉列表中选择一个车辆,该车辆将拉出 reg_number 列并将其显示在该下拉列表中。
我有以下代码,但它返回 Attempt to read property "id" on string 错误。我不确定我做错了什么。有人可以帮忙吗?
我的控制器:
class MaintenanceController extends Controller
{
public function index()
{
$energy = Maintenance::orderBy('id', 'desc')->paginate(5);
$cars = Vehicle::where('id', 1)->pluck('reg_number', 'car_model');
return view('admin.vmaintenance', compact('energy','cars'));
}
public function store(Request $request)
{
$energy = new Maintenance;
$cars = Vehicle::all();
$energy->smsstaff_key = $request->input('technician');
$cars->reg_number = $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');
}
}
我的模型:
车型:
class Vehicle extends Model
{
public $timestamps = false;
protected $table = 'vehicle';
protected $primaryKey = 'id';
protected $guarded = ['id'];
use HasFactory;
}
能源模型:
class Energy extends Model
{
public $timestamps = false;
protected $table='energystores';
protected $primaryKey = 'energystore_key';
use HasFactory;
}
视图中的下拉菜单:
<label>Select Vehicle</label>
<select name="vehicle_id" >
@foreach($cars as $car)
<option value="{{ $car->id }}">{{ $car->reg_number }}</option>
@endforeach
</select>
【问题讨论】:
-
当您使用
pluck()时,会返回一个键值数组而不是模型集合。尝试转储$cars。 (如果您删除 pluck 功能并将其替换为get(),它将起作用)。 -
从另一个表中获取汽车详细信息的所有其他代码是否正确?
-
@nivan34 正如我评论的那样:
$cars = Vehicle::where('id', 1)->get();。我猜哪里只用于测试?这样只会选择一辆车 -
@Pradeep,我仍然遇到同样的错误。有没有其他方法可以做到这一点?
-
@GertB。好吧,这行得通!但它只显示 1 如你所说。有没有办法让它全部显示出来?