Я обнаружил проблему ...
То, как вы вызываете метод отношения, определенный в модели, меняет возвращаемый результат.
В общем, если вы вызываете:
$model->relationship() //with parenthesis
возвращается экземпляр отношения . Вы вызываете метод как метод, и, как и для классов модели Eloquent, он «служит мощным средством построения запросов» и «предоставляет мощные возможности создания цепочек и запросов» ( см. Здесь ).
В противном случае, если вы позвоните:
$model->relationship //without parenthesis
, вы получите экземпляр коллекции . Таким образом, вы вызываете метод как свойство и получаете Laravel Collection , что позволяет вам l oop в коллекции, получать свойства записи (модели) и использовать все методы класса Collection.
Итак, в моем случае написание
$rndVersione = Version::inRandomOrder()->first();
$rndFilm = $rndVersione->film()->first(); //film() WITH parenthesis
работает, я полагаю, потому что метод first () вызывается для отношения как метода, поэтому поддерживается правильность построения запроса.