在laravel中使用with或load包含参数的语法是什么?

z31licg0  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(152)

对不起,!有一个困惑,如何将我的参数纳入模型与控制器在Laravel.这是我的代码模型:

class Posts extends Model
{
    use HasFactory;

    // protected $fillable = ['title','excerpt','content'];
    protected $guarded = ['post_id'];

    // protected $with = ['author','category'];

    public function category(int $limit)
    {
        return $this->belongsTo(Categories::class, 'category_id','category_id')->limit($limit);
    }

    public function author(int $limit)
    {
        return $this->belongsTo(User::class, 'user_id','user_id')->limit($limit);
    }
}

这是我在Controller上的代码:

class PostsController extends Controller
{
    public function index()
    {
        $banyak = Posts::count();
        if($banyak<=0){
            return view('blog',[
            "title"=>'All Post',
                'posts'=>[]
            ]);
        }else if($banyak>0){
            return view('blog',[
                "title"=>'All Post',
                'posts'=>Posts::with(['category'=>(10),'author'])->latest()->get()
            ]);
        }
    }
}

我对如何在Controller中将值10输入到“category”和“author”方法Model中的$limit参数感到困惑
From there
to there

n3h0vuf2

n3h0vuf21#

有一种过滤关系的方法:

Posts::with(['category' => function ($category_query) use ($some_value) {
   $category_query->where('something', $some_value);
})->latest()->get()

但是,根据https://laravel.com/docs/9.x/elaborent-relationships#constraining-eager-loads,您不能 * 限制 * 关系查询:
约束急切加载时,不能使用 limittake 查询生成器方法。

相关问题