i'm getting the following error when trying to filter a query by ID:

My query:
$film=film::wherehas('actor', function($q) use($actor_id){
$q->where('actor_id','=', $actor_id);
})->get();
model Film:
class film extends Model{
protected $table = "film";
protected $primaryKey = 'film_id';
public $timestamps = false;
use HasFactory;
protected $sql=['film_id', 'title', 'length'];
}

CodePudding user response:
Just change your query to be like:
$film=film::wherehas('actor', function($q) use($actor_id){
$q->where('film_actor.actor_id','=', $actor_id);
})->get();
CodePudding user response:
Your query doesn't know which actor_id column you're targeting in that where() clause. Append the table name, like:
$q->where('film_actor.actor_id', '=', $actorId);
// or `actors.actor_id`, not sure which is being expected here.
Or considering changing your actors table's actor_id to just id. Generally, you don't append the table name to id for the primary key. Same with films.film_id; that can just be id.
