laravel / framework

The Laravel Framework.
https://laravel.com
MIT License
32.64k stars 11.04k forks source link

Broken relation hasOneThrough (using Many-to-Many Pivot) after update #53557

Open MarekGogol opened 4 days ago

MarekGogol commented 4 days ago

Laravel Version

v11.31.0

PHP Version

8.3.8

Database Driver & Version

8.3.8 for macOs

Description

Relation returns collection instead of eloquent after minor laravel update.

This applies only when using methods ->though(xxx)->has(yyy), but not when using ->hasOneThrough

image

Correct (v11.30.0):

image

Wrong (v11.31.0):

image

Steps To Reproduce

Just setup simple has one trough relation according to documentation.

image

My code

Student.php

class Student extends Model
{
    public function termine()
    {
        return $this->through('terminesPivot')
                    ->has('termine');
    }

StudentsTerminesPivot.php

class StudentsTerminesPivot extends Pivot
{
    public $table = 'termine_student_termines';

    public function termine()
    {
        return $this->hasOne(Termine::class, 'id', 'termine_id');
    }
}

Termine.php

class Termine extends Model
{

}
crynobone commented 3 days ago

Hey there, thanks for reporting this issue.

We'll need more info and/or code to debug this further. Can you please create a repository with the command below, commit the code that reproduces the issue as one separate commit on the main/master branch and share the repository here?

Please make sure that you have the latest version of the Laravel installer in order to run this command. Please also make sure you have both Git & the GitHub CLI tool properly set up.

laravel new bug-report --github="--public"

Do not amend and create a separate commit with your custom changes. After you've posted the repository, we'll try to reproduce the issue.

Thanks!