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的用户。