How to check if one record is attached to another?

Try instead:

$seminar->students->contains($student->id);

Presuming $student contains an instance of the Student model you can simplify it further and just use:

$seminar->students->contains($student);

When you add parentheses you're using the Laravel query builder, and you never completed the query. To do it in the manner you had originally you would need:

$seminar->students()->get()->contains($student->id);

This method could be useful if you wanted to add constraints when fetching your students.

But generally you can omit the parentheses and a Collection will be returned, allowing you to use methods like contains.

This has the additional benefit of not re-querying the database once the relationship is loaded, so will generally be a far more efficient means of fetching relationships.

If you haven't already loaded the students and want a database efficient method of checking you could instead use:

$seminar->students()->where('students.id', $student->id)->exists();

In your case the exception is you are calling 'contains()' function (which is for Laravel Collection) on 'Query Builder'. It should be

$seminar->students->get()->contains($student->id);

but this is inefficient since this will retrieve all the students of the seminar.

so instead,

$seminar->students()->wherePivot('student_id', $student->id)->exists();

this method will check in the intermediate table of many to many relationship for particular seminar-student pair, and will return whether exists or not.