Php laravel4按关系(一对多)从其他表中选择所有数据

Php laravel4按关系(一对多)从其他表中选择所有数据,php,mysql,laravel,Php,Mysql,Laravel,我有两个表用户它的模型(用户)。。。和服务it模型(servs)。。。。这种关系是一对多的。。。。当我尝试选择属于一个用户的所有服务时。。。。它只选择第一个服务,而忽略其他服务。。。这是我用过的代码 public function getserv(){ return View::make('infos.serv'); } public function postserv(){ $user = User::find(Auth::user()

我有两个表用户它的模型(用户)。。。和服务it模型(servs)。。。。这种关系是一对多的。。。。当我尝试选择属于一个用户的所有服务时。。。。它只选择第一个服务,而忽略其他服务。。。这是我用过的代码

public function getserv(){
        return View::make('infos.serv');
    }

    public function postserv(){
        $user   =   User::find(Auth::user()->id);
        $user_id    =   $user->id;

        $serv = servs::where('user_id','=',$user_id);
        if($serv->count()){
            $serv = $serv->get();
            //return $serv->user_id;
            foreach ($serv as $servs) {
                return $servs->serv_id;
            }
        }

    }

与其在第一个循环中返回数据,不如执行以下操作:

$result = array();
foreach ($serv as $servs) {
    $result[] = $servs->serv_id;
}
return $result;
    $user = Auth::user();
    $servs = $user->servs;
    foreach ($servs as $serv) {
        echo $serv->serv_id;
    }
试试这个

public function postserv(){
    $user   =   User::find(Auth::user()->id);
    $user_id    =   $user->id;

    $serv = servs::where('user_id','=',$user_id)->get()->first;

    if($serv)
        return $serv->serv_id;
    else
        return null;
}

您只会看到第一个,因为当您返回某个内容时,函数将结束,
$serv
的其余部分不会得到处理

我建议您首先正确设置

之后,您可以检索用户的所有服务,如下所示:

$result = array();
foreach ($serv as $servs) {
    $result[] = $servs->serv_id;
}
return $result;
    $user = Auth::user();
    $servs = $user->servs;
    foreach ($servs as $serv) {
        echo $serv->serv_id;
    }

当然,因为当您
返回
某个内容时,函数将结束,
$serv
的其余部分不会得到处理。