简体   繁体   中英

laravel4 select all data from other table by relation(one to many)

i have two tables users its model (User) ... and servs it model (servs) .... the relation is one to many .... when i try to select all sevices with belong to one user .... it select first service only and ignore others ... this is code i used it

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

    }

Instead of returning the data at the first loop, you should better do something like this:

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

Try this.

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

You only see the first one because when you return something the function ends and the rest of $serv doesn't get processed.

I recommend you first set up Eloquent relations properly

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

After that you can retrieve all servs for a user like this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM