有一个典型的我与邮政
职位模型:
public function comments(){
return $this->hasMany('App\Comment');
}
迁移后:
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
});
评论模型:
public function Post(){
return $this->belongsTo('App/Post', 'id');
}
评论迁移:
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->date('date_comment');
$table->unsignedInteger('post_id')->nullable()->default(null);
$table->foreign('post_id')->references('id')->on('posts');
});
我想在拉威尔使用渴望加载。
例如我怎样才能使用“急切加载”获得他最近评论的所有帖子?
我试过这个:
$post = Post::with('comments:post_id, date_comment')->get();
但像这样,我得到了所有的评论。需要帮忙吗?
最好的问候
编辑:
Foreach语句(Blade):
@foreach($posts as $post)
<td>{{ $post->name }}</a></td>
<td>
{{ !empty($post->comments[0]) ? $post->comments[0]->
date_comment : '' }}
</td>
@endforeach
您可以约束即时加载
$posts = Post::with(['comments' => function($qry) {
$qry->select('id','date_comment')->orderBy('date_comment', 'desc')->first();
}])->get();
使用这个,你可以访问所有的帖子与他们的最新评论。
如果在查询中使用select
方法,不要忘记在列表中添加id
字段。
要访问注释的日期,请执行以下操作:
foreach($posts as $post) {
var_dump(!empty($post->comments[0]) ? $post->comments[0]->date_comment : '');
}
您需要再建立一个关系来检索最新的注释。
邮递php
public function comments(){
return $this->hasMany('App\Comment');
}
public function latestComment(){
return $this->hasOne('App\Comment')->orderBy('date_comment', 'desc');
}
现在你可以这样取回它。
$posts = Post::with('latestComment')->get();
注:未测试。
在我的控制器我有以下代码: 在这两种方法中,只读取查询的第一个条件。 我想让1子句和1在急切加载的数据中被过滤。 有什么我错过了做的吗?我把它编错了吗?
我有一个问题,就是基于hasMany关系从数据库中获取数据并将其发送到Larave中的api。在下面的代码中,Laravel没有给我客户id=$id的产品。我不知道为什么,我不能在$query旁边发送$id。如果我把号码写在“我有很好的安全套,但我需要自动拿。 所有api代码 先谢谢你。
我有以下三个表格: 帖子 帖子: 评论: 标签: Post表有许多注释,comments表有许多与之关联的标记。 如何使用“快速加载”将所有这些表组合在一起? 比如: 但是这个查询总是在标记关系中返回空响应。 我做错了什么? 期望的结果是这样的: 你可以看到帖子里面包含评论,评论里面也包含标签关系。 另外,我在我的项目中使用了“jenssegers/laravel mongodb”包,我试图在没有
我试图从一个表中选择所有结果,并在用户ID匹配时与另一个表合并。 我有三个表:runs、users和一个run\u用户透视表。我想从数据透视表中的“运行”和其他列(即“已完成”、“粘性”、“上次测试”和“难度”)中选择所有结果,但只从当前用户的“运行用户”中提取数据。 在原始SQL中,我通过一个带有AND语句的左连接成功地做到了这一点: 如何通过查询生成器执行此操作,有何建议?我可以在Larave
拉威尔说: 我需要的是这样的东西 我们可以在一个关系中加载多个关系。 这有可能吗?
这是通过mysql成功执行的查询: 这是一个查询laravel,我使用查询生成器: 我得到了这个错误: "SQLSTATE[42000]:语法错误或访问冲突:1055'lookbubbledrink.v.id'不在GROUP BY(SQL:选择Count()作为总数,.,.代码>作为左加入作为上的。##################################################