【问题标题】:Laravel: Attempt to assign property "key" on nullLaravel:尝试在 null 上分配属性“键”
【发布时间】:2021-11-03 07:49:18
【问题描述】:

我想使用连接将数据保存到我的 SQL 表中。我有 3 张桌子。 vehiclesmsstaffvehicleslogvehiclesmsstaff 加入 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


【解决方案1】:

不确定它的工作,但尝试:

  public function store(Request $request)
{
$energy= new  VehicleLog();

   //  $energy->YOURE VehicleLog COLUMNS = THE DATA to BE STORE IN  COLUMN

    $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();

【讨论】:

  • 看起来怎么样?
  • 我还没有尝试过,@souroushganjooe,我不太确定用什么替换评论。喜欢语法
  • 不要替换任何东西..它只是为了更好地理解
  • 只需删除 yore join 查询并添加 $energy= new VehicleLog();安装...
  • 只需检查您的数据库,看看您的所有列是否都已填满;如果不只是从表单或其他表格中获取数据
【解决方案2】:

这是一个简单的答案,我知道..但问题可能是您选项中的“smstaff_key”拼写:

                    <option value="{{ $staffs->smstaff_key }}">{{ 
                   $staffs['name'] }}</option>

它应该是:

                    <option value="{{ $staffs->smsstaff_key }}">{{ $staffs['name'] }}</option>

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2022-07-08
    • 2021-08-10
    • 2021-06-08
    • 2022-11-16
    • 2022-10-12
    • 2022-01-04
    • 2021-06-25
    • 2023-01-28
    相关资源
    最近更新 更多