【问题标题】:Getting another tables data to show in drop down list Laravel获取另一个表数据以显示在下拉列表 Laravel
【发布时间】: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)-&gt;get();。我猜哪里只用于测试?这样只会选择一辆车
  • @Pradeep,我仍然遇到同样的错误。有没有其他方法可以做到这一点?
  • @GertB。好吧,这行得通!但它只显示 1 如你所说。有没有办法让它全部显示出来?

标签: php laravel laravel-8


【解决方案1】:

代替:

$cars = Vehicle::where('id', 1)-&gt;pluck('reg_number', 'car_model');

使用这个:

$cars = Vehicle:pluck('reg_number', 'id');

【讨论】:

  • 这个怎么样:` $cars = Vehicle:select('id', 'reg_number')->get()`
猜你喜欢
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2011-10-23
  • 1970-01-01
  • 2016-11-04
相关资源
最近更新 更多