, поскольку вы хотите использовать запрос к БД, вам нужно добавить соединение.
\DB::table('artists')
->join('artworks', 'artists.id', '=', 'artworks.artist_id')
->select('artists.id as id', 'artists.name as name', \DB::raw("count(artworks.artist_id) as count"))
->groupBy('artists.id')
->get();
И если вы хотите использовать отношение, используйте отношение hasMany
в модели Artist .
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Artist extends Model
{
protected $table = 'artists';
public function artworks()
{
return $this->hasMany('App\Artwork','artist_id','id');
}
}
В контроллере
$artists = Artist::withCount('artworks')->get();
foreach($artists as $artist) {
echo $artist->artworks_count;
}