如何在我的控制器中适应一对多?

时间:2014-03-24 12:30:55

标签: php laravel laravel-4 eloquent laravel-3

我有两个模型(用户和服务)。我想要的是显示用户的所有服务。这是我向我展示所有服务的行动:

public function index()
{
    $services = Service::all();

    // load the view and pass the nerds
    return View::make('services.index')->with('services', $services);
}

在我的用户模型中添加了此功能:

public function service()
{
    return $this->hasMany('Service');
}

然后在我的服务模式中

public function user()
 {
     return $this->hasOne('User');
 }

所以,如果有人有任何想法,我将非常感激:)

2 个答案:

答案 0 :(得分:0)

在您的服务模式中。请注意,您可能必须在这些关系上定义本地和外包键

 public function user()
 {
   return $this->belognsTo('User');
 }

然后你可以在你的控制器或视图中解析它们(只有foreach部分),就像这样

$user=User::find($id);
foreach($user->service as $service){
 //do something 
   echo $service->id
}

答案 1 :(得分:0)

您要寻找1对多关系的关系是hasMany()belongsTo()

考虑到这一点,在Service模型中,定义关系就像这样......

public function user()
{
    return $this->belongsTo('User');
}

在这种情况下,这并不重要,因为你没有使用它,但它可能会在以后为你节省一些混乱。

现在要获取用户的服务,您可以使用User模式。

$services = User::find(1)->services;

或者,如果您只想获取登录用户的服务......

$services = Auth::user()->services;