Php 如何调整控制器中的一对多?

Php 如何调整控制器中的一对多?,php,laravel,laravel-4,eloquent,laravel-3,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 fu

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

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');
 }
然后在我的服务模型中:

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

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

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

 public function user()
 {
   return $this->belognsTo('User');
 }
然后,您可以像这样在控制器或视图(仅foreach部分)中解析它们

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

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

记住这一点,在您的
服务
模型中,定义如下关系

public function user()
{
    return $this->belongsTo('User');
}
在这个场景中,这并不重要,因为您没有使用它,但它可能会在以后为您节省一些混乱

现在,要获得用户的服务,您可以使用
User
模型

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

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


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

谢谢,但当我尝试时,我得到了这个错误“尝试获取非对象的属性”,哦,我明白了,我们的方法是不同的。尝试
User::find(1)->service
。如果这不起作用,很可能是因为您没有存储id为1的用户。