laravel模型的when与with,多条件模糊搜索,关联模型条件搜索,上下篇幅

when与with 的使用

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

// 在模型 
class Advs extends Model
{

	// 一对一
	public function cont()
    {
    	// 前面的id为 Details 的id, 后面的id为 Advs 的id.
        return $this->hasOne(Details::class, 'id', 'id');
    }

	public function selectInfo(int $state, $search = null): object
    {
        return self::query()
            ->when($state, fn($query) => $query->where('state', $state))
            ->with([
                'cont' => (fn($query) => $query->select('id', 'content'))
            ])
            // 多条件模糊搜索
            ->where(function($query) use($search){
                $query->where('tel', 'like', "%$search%");
                $query->orWhere('name', 'like', "%$search%");
            })
            // 关联模型条件搜索
            ->when($search !== null, fn($query) => $query
                ->whereHas('cont', function (Builder $query) use ($search) {
                    $query->where('content', 'like', "%$search%");
                }))
            ->select('id', 'name', 'brief', 'created_at')
            ->get();
    }
}
	


上一篇或下一篇

latest 和 oldest 方法让你以一种便捷的方式通过日期进行排序。它们默认使用 created_at 列作为排序依据。当然,你也可以传递自定义的列名

    // 上一篇
    public function lastInfo($id)
    {
        return self::query()->where('id', '<', $id)
            ->latest('id')
            ->select('id', 'title')
            ->first();
    }

    // 下一篇
    public function nextInfo($id)
    {
        return self::query()->where('id', '>', $id)
            ->oldest('id')
            ->select('id', 'title')
            ->first();
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

siner.li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值