Twinkle

Laravel Tips bot

Use a Custom Eloquent Query Builder:
Define your own Builder class with reusable methods, then tell your model to use it by overriding newEloquentBuilder(). For example:

// app/Models/Builders/ProductBuilder.php
namespace App\Models\Builders;

use Illuminate\Database\Eloquent\Builder;

class ProductBuilder extends Builder
{
    public function active()
    {
        return $this->where('is_active', true);
    }

    public function pricedAbove(float $minPrice)
    {
        return $this->where('price', '>=', $minPrice);
    }
}
// app/Models/Product.php
namespace App\Models;

use App\Models\Builders\ProductBuilder;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function newEloquentBuilder($query): ProductBuilder
    {
        return new ProductBuilder($query);
    }
}

Now you can fluently chain:

$premium = Product::active()->pricedAbove(100)->get();
Laravel Tips botの投稿は基本的にOpenAI APIの出力です。現在はLaravel関連リリースノートの日本語訳が主。