Methods such as orderBy, inRandomOrder, paginate, findOrFail etc. do not appear from Model
Laravel Version
12.14.1
PHP Version
8.4.0
Database Driver & Version
No response
Description
I was watching this tutorial. https://www.youtube.com/playlist?list=PL4cUxeGkcC9gF5Gez17eHcDIxrpVSBuVt
I have written this Ninja model:
class Ninja extends Model
{
protected $fillable = [
"name",
"skill",
"bio",
// 19 Handling Post Requests
"dojo_id"
];
/** @use HasFactory<\Database\Factories\NinjaFactory> */
use HasFactory;
// 17 Foreign Keys 2
public function dojo()
{
return $this->belongsTo(Dojo::class);
}
}
But when I type it's methods, methods orderBy, findOrFail and paginate aren't recognizable in Laravel 12. They do not get suggestions in VS Code. I've checked Model class and these methods don't exist in it. I have the official Laravel extension and PHP Intelephense installed. I assume something has changed in Laravel 12.
I've found a workaround to add method query after the Model name. It works for paginate, findOrFail, but it doesn't work for orderBy, inRandomOrder etc.
public function index()
{
// route --> /ninjas/
// 15 Pagination
$ninjas = Ninja::with("dojo")->orderBy("created_at", "desc")->paginate(10);
return view("ninjas.index", [
"ninjas" => $ninjas
]);
}
Steps To Reproduce
- Create Laravel Project
- Create a Ninja model (with flags
-mfs) - Create a Ninja controller for the model
- Type
$ninja = Ninja::in the controller - Type a method name, e.g.
orderBy - It does not appear in suggestions
what happens if you ignore VS Code and actually try to run the code?
i feel like this is really just an issue with intellisense rather than that the methods actually dont exist
laravel historically hasnt played very nicely with IDEs and while there have been several plugins etc attempting to improve that that seems the most likely explanation to me here
Model forwards call to protected Eloquent Builder $query when the function is not found in model. You can use https://github.com/barryvdh/laravel-ide-helper for better autocomplete.
We always use Model::query()->... to have autocomplete and ctrl+click functionality.
what happens if you ignore VS Code and actually try to run the code?
i feel like this is really just an issue with intellisense rather than that the methods actually dont exist
laravel historically hasnt played very nicely with IDEs and while there have been several plugins etc attempting to improve that that seems the most likely explanation to me here
The project has no problem when running.
what happens if you ignore VS Code and actually try to run the code? i feel like this is really just an issue with intellisense rather than that the methods actually dont exist laravel historically hasnt played very nicely with IDEs and while there have been several plugins etc attempting to improve that that seems the most likely explanation to me here
The project has no problem when running.
Then you don't have to worry about this problem but I suggest you to use another IDE maybe phpstorm would be better option or I don't usually use VS Code and since you are getting this error maybe you need to configure it a bit.
what happens if you ignore VS Code and actually try to run the code? i feel like this is really just an issue with intellisense rather than that the methods actually dont exist laravel historically hasnt played very nicely with IDEs and while there have been several plugins etc attempting to improve that that seems the most likely explanation to me here
The project has no problem when running.
Then you don't have to worry about this problem but I suggest you to use another IDE maybe phpstorm would be better option or I don't usually use VS Code and since you are getting this error maybe you need to configure it a bit.
I'm broke for PHPStorm.
@IgorArnaut this does not work for vs code? https://github.com/laravel/framework/issues/55867#issuecomment-2912811526
VSCode might not come as optimized for PHP development, but its extensions can improve DevEx significantly:
VSCode might not come as optimized for PHP development, but its extensions can improve DevEx significantly:
* [`laravel.vscode-laravel` (Official Laravel VSCode extension)](https://marketplace.visualstudio.com/items?itemName=laravel.vscode-laravel)
I already have that extension.
* [`bmewburn.vscode-intelephense-client` (PHP Intelephense)](https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client)
This one too.
* [`ValeryanM.vscode-phpsab` (PHP Sniffer & Beautifier)](https://marketplace.visualstudio.com/items?itemName=ValeryanM.vscode-phpsab) * [`mohamedbenhida.laravel-intellisense` (Laravel Intellisense)](https://marketplace.visualstudio.com/items?itemName=mohamedbenhida.laravel-intellisense) * [`amiralizadeh9480.laravel-extra-intellisense` (Laravel Extra Intellisense)](https://marketplace.visualstudio.com/items?itemName=amiralizadeh9480.laravel-extra-intellisense)
And this one too.
@IgorArnaut this does not work for vs code? #55867 (comment)
orderBy DOES NOT APPEAR.
https://github.com/user-attachments/assets/de76724f-d482-4194-9007-5e8fd02c9cef
You can use https://github.com/barryvdh/laravel-ide-helper and the Model::query() method for autocomplete. Phpstorm or Cursor have a better auto completion IMHO
@IgorArnaut