Laravel选择对象作为属性

时间:2017-05-29 11:08:19

标签: php laravel orm

我想知道是否可以在查询中执行左连接,如果它存在,而不是让所有列都在同一个"级别"使连接表作为属性(这没有任何关系)

例如

["id"/*This actually gets messed up if select doesn't choose wich to use*/,
  "name",
  "age",
  /*Now post fields*/
  "tile",
  "date_posted"
  ...
]

而不是将每个领域一起归还,

["id",
  "name",
  "age",
  "post"=>[
    "id",
    "tile",
    "date_posted"
    ...
   ]
]

并让它返回

<script type="text/javascript">
$('#confirmApplicationProcessButtonId').click(function(){
                    $('#deviceFormId').attr('method', 'post');
                    $('#deviceFormId').attr('action', '${contextPath}/device/submit');
                    $('#deviceFormId').submit();

                });
</script>


<form:form commandName="deviceForm"
                                                name="deviceForm"
                                                id="deviceFormId"
                                                method="get"
                                                action="${contextPath}/newdesign/applicant/device/${deviceForm.device.id}"                                              
                                                htmlEscape="yes"
                                                enctype="multipart/form-data">



<button type="button" class="btn btn-primary"            id="confirmApplicationProcessButtonId"         disabled="disabled" ><fmt:message key="confirm.device.process" /></button>


</form:form>

编辑:如果可能出于显而易见的原因避免循环......我知道这是可能的,并且万不得已将使用它们但不使用循环会有很多帮助

1 个答案:

答案 0 :(得分:2)

您在用户表中使用了eloquent。为什么不使用关系?它完全符合你的要求。创建一个新的Post模型。然后将以下关系添加到您的User模型。

public function posts()
{
    return $this->hasMany(Post::class);
}

您现在可以通过这样的帖子获取用户

$users = User::with('posts')->get();

结果正是您想要的。另外,我在我的示例中使用了User,您使用了user。结果将包含作为posts而不是post的posts对象,如您在示例中所示,您可以通过更改关系方法名称来更改此属性名称。我已经使用过这些,因为它们是正确的惯例。