【问题标题】:Array to String Conversion Error Symfony 3数组到字符串转换错误 Symfony 3
【发布时间】:2017-02-12 13:55:42
【问题描述】:

我有两个表 Project 和 User 以及一个联接表 ProjectUser。我正在创建一个查询来选择某个 projectName 下的用户我不能这样做所以我创建了一个查询来根据项目表中的名称选择项目的 id public function findName($projectName){ $query=$this->getEntityManager() ->createQuery("SELECT p.id FROM SocialProProjectBundle:Project p WHERE ``p.name='$projectName'"); return $query->getResult(); }

然后查询通过项目id选择用户

public function findProjectUsers($pId){
 $query=$this->getEntityManager()
 ->createQuery(
 "SELECT pu, u FROM SocialProProjectBundle:ProjectUser pu JOIN      SocialProDefaultBundle: User u WHERE pu.project = '$pId'"
        );
    return $query->getResult();
}

但我总是得到注意:数组到字符串的转换!!!!!

这是我在控制器中调用它们的方式

 $projectName = $request->get('projectName');
    echo($projectName);
    $projectId=$this->getDoctrine()->getRepository('SocialProMeetingBundle:meetingUser')->findName($projectName);
    echo(count($projectId));
    foreach($projectId as $pId) {
        $pus = $this->getDoctrine()->getRepository('SocialProMeetingBundle:meetingUser')->findProjectUsers($pId);
    }
   $response = "<select class=\"select2_multiple form-control\" multiple=\"multiple\">";
    foreach ($pus as $user) {//($i=0;$i<count($pus);$i++)
        $name[]=array($user->getFirstName());
     }
    $response = $response . "<option>$name</option>";
    $response = $response."</select> ";
    return new Response($response);
    //return($pus);
    //call repository function
}

【问题讨论】:

  • 每个foreach循环也不返回结果!!!当我在循环内创建一个对象并在它之外使用它时,我总是得到未定义的变量
  • $name 是一个数组,您尝试显示它:&lt;option&gt;$name&lt;/option&gt;
  • @malcolm 我试过这样 foreach ($pus as $user) {//($i=0;$igetFirstName(); $响应 = $响应。 ""; } 仍然是同样的问题
  • 通知说错误在查询中
  • 因为你的$pId 是一个对象或数组而不是字符串。

标签: mysql symfony


【解决方案1】:

您好:对于您遇到的关于如何解决它的 for 循环问题,请使用以下代码:

$response = "<select class=\"select2_multiple form-control\" multiple=\"multiple\">";
foreach($pus as $user){
    $response . "<option>" . $user->getFirstName() . "</option>";
}
$response = $response."</select> ";

【讨论】:

    【解决方案2】:

    我找到的解决方案是我避免使用 $pId 并发现能够通过 $projectName 选择用户的查询在这里:

     public function findProjectUsers($projectName){
        $query=$this->getEntityManager()
            ->createQuery(
                "SELECT u.firstName FROM SocialProDefaultBundle:User u, SocialProProjectBundle:Project p, SocialProProjectBundle:ProjectUser pu WHERE u.id = pu.user AND p.id=pu.project AND p.name='$projectName'");
        return $query->getResult();
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 2015-02-26
      • 2012-07-15
      • 2020-09-15
      • 2017-12-02
      • 2013-06-23
      • 2013-08-24
      • 1970-01-01
      相关资源
      最近更新 更多