Laravel 11 - 在模型中调用过程

问题描述 投票:0回答:1

我是 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();

所以我希望尝试调用模型内部的过程并没有完全错误。

我想我需要帮助如何正确调用这个简单的过程(如果可能的话)。

最诚挚的问候,斯蒂芬

php laravel eloquent model procedure
1个回答
0
投票

尝试使用本地范围。 本地范围

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();

} }
© www.soinside.com 2019 - 2024. All rights reserved.