vscode-intelephense
vscode-intelephense copied to clipboard
Laravel model relationships return incorrect types
Describe the bug
Return types for some methods are not formed correctly when using relationships in Laravel models.
To Reproduce
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model {}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Post extends Model
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\User>
*/
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
}
use App\Models\Post;
$user = (new Post())->user()->first(); // object|null
$user = (new Post())->user()->create(); // \Illuminate\Database\Eloquent\Model
$users = (new Post())->user()->get(); // \Illuminate\Database\Eloquent\Collection<int, \App\Models\User>
Expected behavior
$user variable has the correct type
$user = (new Post())->user()->first(); // \App\Models\User|null
$user = (new Post())->user()->create(); // \App\Models\User
Screenshots
Platform and version
- Windows 11
- VSCode
v1.93.1
- Intelephense
v1.12.6
(Premium) - Laravel
v11.23.5