interface IParser {
public function parse();
}
class Source1Parser implements Iparser {}
class Source2Parser implements Iparser {}
class Source3Parser implements Iparser {}
// где-то в программе
$source = 1;
$parser = match ($source) {
1 => new Source1Parser(),
2 => new Source2Parser(),
3 => new Source3Parser(),
}
$data = $parser->parse();
->select(['users.id', DB::raw('count(posts.id) as posts_count'])->leftJoin('posts', 'users.id', '=', 'posts.user')->groupBy('users.id')
->select(['users.id', DB::raw('IFNULL(count(posts.id), 0) as posts_count'])
Post::where('status', 1)
->join('post_tag', 'posts.id', '=', 'post_tag.post_id')
->join('tags', 'tags.id', '=', 'post_tag.tag_id')
->select('posts.*', DB::raw('group_concat(tags.name) as tags_name'))
->groupBy('posts.id', 'posts.name', 'posts.content')->get();
Post::where('status', 1)
->select('posts.*', DB::raw('select group_concat(tags.name) as tags_name from post_tag join tags on tags.id=post_tag.tag_id where post_tag.post_id = posts.id'))->get();
$user = User::where('role_id', 3)
->andWhere(function($query) {
$query
->where('phone', 'like', "%{$search}%")
->orWhere('email', 'like', "%{$search}%");
})
->paginate(25);