我正在使用Laravel做一个小型Web应用程序,并将信息直接放在数据库中Experiencia
所在的数据库中,即:
id matricula_id nombre_Emp puesto
1 201618131 1 1
这是我的Usuario
模型:
protected $table = 'usuarios';
protected $fillable = [
'id',
'matricula_id',
'nombres',
'email',
'password',
'facultad',
];
public function experiencia()
{
return $this->hasMany(Experiencia::class,'matricula_id');
}
还有我的Experiencia
模型:
protected $table = 'experiencias';
protected $fillable = [
'id',
'matricula_id',
'nombre_Emp',
'puesto',
'fecha_Ini',
'fecha_Fin',
];
public function usuario()
{
return $this->belongsTo(usuarios::class,'matricula_id');
}
两个模型都具有可填充的matricula_id
和我要恢复的controller
函数是:
public function index($matricula)
{
$usuario = usuarios::where('matricula_id', $matricula)->with('experiencia')->get();
dd($usuario->all());
}
当我做dd时,我的结果是这样:
array:1 [▼
0 => usuarios {#282 ▼
#table: "usuarios"
#fillable: array:20 [▶]
#hidden: array:2 [▶]
#casts: array:1 [▶]
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:24 [▶]
#original: array:24 [▶]
#changes: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: array:1 [▼
"experiencia" => Collection {#279 ▼
#items: [] <<<<-------- Here is my problem
}
]
#touches: []
+timestamps: true
#visible: []
#guarded: array:1 [▶]
#rememberTokenName: "remember_token"
}
]
我希望数据库中包含experiencia
的数组。
答案 0 :(得分:0)
您可能实际上在调用错误的模型。
public function index($matricula)
{
$experiencia = Experiencia::with('usuario')->whereHas('usuario', function($usuario) use($matricula) {
return $usuario->where('matricula_id', $matricula);
})->get();
dd($experiencia->all());
}
您的模型关系也错了
public function usuario()
{
return $this->belongsTo(usuario::class);
}
答案 1 :(得分:0)
在下面尝试此代码;
public function show($param = null)
{
if (!$param) {
return abort(404, "there is no id present");
}
$param = (int) $param;
$usuario = usuarios::with('experiencia')->where('matricula_id', $param)->first();
dd($usuario->experiencia);
}
用于 index 函数不需要参数,如果未发送参数,则可以保护您的代码,请勿运行其余代码。