我有下一个数据库查询:
Database::select(['*',
\DB::raw('count(notes.id) as count')
])->leftjoin('notes','post.id','=','notes.post_id')
->groupBy('post.id');
1.如何使用Eloquent
我的关系
//Post model
public function notes(){
return $this->hasMany('App\Note','post_id');
}
//Note model
public function post(){
return $this->belongsTo('App\Database');
}
2.如何获得最佳列表帖子和列表注释。示例现场:
id post | title post | count notes |
---注释1
..........
的更新
CREATE TABLE `posts` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL,
`text` VARCHAR(255) NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `notes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`note` VARCHAR(255) NOT NULL DEFAULT '0',
`user_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`post_id` INT(11) NOT NULL DEFAULT '0',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`))
答案 0 :(得分:0)
当我看到您的个案更新时,我认为您的模型中只需要非常雄辩的关系
将此关系放在App\Post.php
public function notes(){
return $this->hasMany('App\Note','post_id');
}
如果您想获得上述数据,可以使用此代码
控制器
$view = view('your-view-file');
$view->posts = App\Post::all();
return $view;
查看
@foreach($posts as $post)
<tr>
<td>{{ $post->id }}</td>
<td>{{ $post->title }}</td>
<td>{{ $post->notes->count() }}</td>
</tr>
@endforeach
您可以使用count()
来汇总从数据库中获取的行数