我是 Laravel 新手,尝试制作一些简单的测试网站以变得更好。
我尝试调用我在模型中创建的公共程序。我的想法是将所有 SQL 选择从网站的代码中删除。我已经尝试了很多并阅读了很多相关内容,但我能说什么。我此刻迷失了。
我的模特:
class Terroir extends Model
{
use HasFactory;
protected $fillable = [
'name',
'type',
'terroir_id',
];
public function Countries() {
$countrys= Terroir::select(['name','id'])
->where ('type',1)
->wherenull('terroir_id')
->orderby('name','ASC')
->get();
return($countrys);
}
}
如果我尝试在 PHP 标签内这样调用它:
$countrys=App\Models\Terroir::with('Countries');
但是没有到达模型。
这适用于 PHP 代码:
$countrys = App\Models\Terroir::select(['name','id'])
->where ('type',1)
->wherenull ('terroir_id')
->orderby('name','ASC')
->get();
所以我希望尝试调用模型内部的过程并没有完全错误。
我想我需要帮助如何正确调用这个简单的过程(如果可能的话)。
最诚挚的问候,斯蒂芬
尝试使用本地范围。 本地范围
class Terroir extends Model{
use HasFactory;
protected $fillable = [
'name',
'type',
'terroir_id',
];
public function scopeCountries(Builder $query): void {
$query->select(['name','id'])
->where ('type',1)
->wherenull('terroir_id')
->orderby('name','ASC');
} }
控制器
class TerroirController extends Controller{
public function index(Category $category)
{
$countries = App\Models\Terroir::countries()
->get();
} }