php - Laravel 8 - 将数据存储为 JSON 并检索关系
问题描述
我有一个表单,允许用户为自己预订车辆(SchemeVehicle),并在这样做时通过 SchemeVehicleLog 模型将日志条目写入数据库。当向自己签出车辆时,用户还可以将车辆签出给作为车辆的“第二驾驶员”的另一用户。
当字段 (second_responder) 只是一个仅允许单个值的下拉菜单但我想更改此表单以便它现在接受多选选项时,这很有效 - 允许用户选择多个用户。
数据存储为 JSON 并且可以解码回一个数组 - 但我遇到的问题是访问关系。我以前可以(当只存储一个值时)做
$second_responder->User2->first_name
这将返回“第二个驱动程序”的名字,但现在它通过 json_encode 存储,这会导致错误。
试图获取非对象的属性“User2”
任何建议将不胜感激!
控制器
public function SchemeVehicleBookoutList()
{
$pagetitle = "Scheme Vehicle Bookout Log";
$logs = SchemeVehicleLog::whereHas('SchemeVehicle', function ($q){
$q->where('vehicle_sid', Auth::user()->sid);
})->orderByRaw('-return_date','desc')->orderBy('signout_date', 'desc')->get();
return view('equipment.schemevehiclesignouts', compact('pagetitle', 'logs'));
}
模型
class SchemeVehicleLog extends Model {
protected $table = 'scheme_vehicles_log';
protected $primaryKey = 'log_id';
use SoftDeletes;
protected $fillable = ['log_id','signout_date','primary_responder','secondary_responder','signout_mileage','fluid_levels','road_worthy','tyres', 'signout_additional_notes', 'return_date', 'return_mileage', 'return_additional_notes'];
public function SchemeVehicle()
{
return $this->belongsTo('App\SchemeVehicle', 'scheme_vehicle_id', 'vehicle_id')->withTrashed();
}
public function User1()
{
return $this->hasOne('App\User', 'uid', 'primary_responder');
}
public function User2()
{
return $this->hasOne('App\User', 'uid', 'second_responder');
}
}
解决方案
推荐阅读
- javascript - 递归使用数组原型方法
- angular - 在 UI 中使用 formGroup 和 formArray 的问题
- python - Python:两次差异的标志
- reactjs - 有什么方法可以使用不安全的 API 连接(React)?
- c# - 无法在 C# 的 for 循环之外打印我的结果
- mule - APIkit API 控制台返回 json 示例而不是真实响应
- python - 数据框:在 if else 函数的新列中添加列出的值
- react-native - 一次向服务器发布多个参数 - React Native
- python-3.x - 在 Python 中计算 ICMP 回显请求的校验和
- apache - 在 apache 服务器上监控:为什么在 /var/log/monit 上监控日志“'apache' 错误 -- 未知资源 ID:[5]”