laravel 4按关系从一个表中选择所有数据(一对多)

时间:2015-01-19 17:01:37

标签: php mysql laravel

我有两个表用户其模型(用户)...并维护它的模型(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;
            }
        }

    }

3 个答案:

答案 0 :(得分:0)

不应该在第一个循环中返回数据,而应该更好地执行以下操作:

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

答案 1 :(得分:0)

试试这个。

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;
}

答案 2 :(得分:0)

您只能看到第一个,因为当您返回某个内容时,该功能会结束,$serv的其余部分将无法处理。

我建议您先正确设置Eloquent relations

class User extends Eloquent {
    public function servs(){
        return $this->hasMany('servs');
    }
}

之后,您可以为这样的用户检索所有服务:

    $user = Auth::user();
    $servs = $user->servs;
    foreach ($servs as $serv) {
        echo $serv->serv_id;
    }