我在laravel中使用一对一关系。 我有两个模型,一个是User,另一个是UserDetails。
关系在用户模型中
mlflow.azureml.build_image()
我称这些模型为
ResolvePackageNotFound:
- pyspark=2.4.0.dev0
[0mThe command '/bin/sh -c CONDA_ROOT_DIR=$(conda info --root) && if [ -n "$AZUREML_CONDA_ENVIRONMENT_PATH" ]; then conda env update -p "$AZUREML_CONDA_ENVIRONMENT_PATH" -f '/var/azureml-app/conda.yaml'; else conda env update -n base -f '/var/azureml-app/conda.yaml'; fi && conda clean -aqy && rm -rf /root/.cache/pip && rm -rf "$CONDA_ROOT_DIR/pkgs" && find "$CONDA_ROOT_DIR" -type d -name __pycache__ -exec rm -rf {} +' returned a non-zero code: 1
2019/04/29 11:44:45 Container failed during run: acb_step_0. No retries remaining.
failed to run step ID: acb_step_0: exit status 1
Run ID: cmp failed after 1m58s
但是我正在打印返回内容,如下所示:-
public function userDetails(){
return $this->hasOne(UserDetail::class);
}
所以我想在将详细信息合并到一个对象中后得到回报。
谢谢
答案 0 :(得分:1)
尝试以下代码:
$user = User::with('userDetails')->find(2);
$user->user_detail_id = $user->userDetails->id;
$user->address = $user->userDetails->address;
$user->mobile_number = $user->userDetails->mobile_number;
$user->passport_number = $user->userDetails->passport_number;
$user->zip_code = $user->userDetails->zip_code;
unset($user->userDetails);
echo "<pre>"; print_r($user->toArray()); die;
谢谢。
答案 1 :(得分:1)
这将在您加载关系时自动发生。您可以使用with()或load()进行此操作,具体取决于您是否拥有模型。
在上面的示例中,您将在同时获取用户的同时使用with()
:
$user = User::with('userDetails')->find(2);
或者,如果您已经拥有User
模型,则可以使用load()
:
$user = User::find(2);
$user->load('userDetails');
现在,尽管如此,由于您只有一个User
模型而不是一个集合,因此您不必担心急于解决的(n + 1)问题,因此您可以只需访问该属性,Laravel就会自动为您获取信息,例如:
$user = User::find(2);
$user->user_details;
现在,如果您执行dd($user->toArray())
,将会看到信息已加载。
仅供参考,而不是将print_r()
与die()
一起使用并将其包装在<pre>
标签中,可以使用dump()和dd()帮助函数
答案 2 :(得分:0)
您尝试过这个吗 $ user =用户:: find(2)
echo print-r ($user->userDetails);