拉雷维尔口才出众的ORM初学者
我试着提出一个简单的要求。 假设登录用户有“项目”。 假设“项目”有很多“评论” 我尝试从用户那里获取所有项目,并按项目列出所有注释 我有一个名为“用户”、“项目”、“评论”的表格。 用户由哨兵管理 我有两个模型:项目和评论:拉雷维尔口才出众的ORM初学者,orm,laravel,eloquent,Orm,Laravel,Eloquent,我试着提出一个简单的要求。 假设登录用户有“项目”。 假设“项目”有很多“评论” 我尝试从用户那里获取所有项目,并按项目列出所有注释 我有一个名为“用户”、“项目”、“评论”的表格。 用户由哨兵管理 我有两个模型:项目和评论: class Project extends Eloquent { ... } class Comment extends Eloquent { ... } 在我的“项目”模型中,我有: public function comments() { return $t
class Project extends Eloquent { ... }
class Comment extends Eloquent { ... }
在我的“项目”模型中,我有:
public function comments()
{
return $this->hasMany('Comment');
}
在我的控制器里我有这个
$projects = Project::comments()->paginate(10);
而且。。。不起作用。
以最好的方式,我想要这样的东西
$projects = Project::comments()->where('projects.account_id', '=', Sentry::getUser()->id)->paginate(10);
你能帮我吗
编辑
好的,现在,我修改了这样的模型
$projects = Project::comments()->where('projects.account_id', '=', Sentry::getUser()->id)->paginate(10);
用户模型:
public function project()
{
return $this->hasMany('Project');
}
项目模式:
public function user()
{
return $this->belongsToMany('User');
}
public function project()
{
return $this->belongsToMany('Projects');
}
评论模式:
public function user()
{
return $this->belongsToMany('User');
}
public function project()
{
return $this->belongsToMany('Projects');
}
在我的控制器中:
$projects = User::with( array('project', 'project.comments') )->find( Sentry::getUser()->id );
Laravel在我的刀片循环中说“尝试获取非对象的属性”:
@foreach ($projects as $project)
{{ $project->slug }}
@endforeach
差不多
编辑
好的,很好。我修改了我的视图,没问题。
感谢所有如果您想从用户那里获得所有项目,以及该项目的所有注释,则需要执行以下操作:
user::with(array('projects','projects.comments')->find(Sentry::getUser()->id)代码>
这将抓取当前用户,并加载与该项目相关的所有项目和项目注释 Laravel说:对未定义方法Illumb\Database\Query\Builder::hasManyThrough()的调用对我来说不起作用。项目没有用户id,而是帐户id。正因为如此?您的关系设置不正确。你需要首先确保雄辩的关系被正确地建立起来。这看起来更像是拉雷维尔的版本对于他想要做的事情是不正确的hasManyThrough
是Laravel 4.1的新版本,您确定要使用4.1吗?是的,确定@bgallagh3r我已经修复了这个问题,现在项目有了用户id并且没有效果。废话。