zoukankan      html  css  js  c++  java
  • Laravel中一些要记住 的写法

    模型篇:

    1.根据数据库部分URL返回完整的URL

        public function getImageUrlAttribute()
        {
            // 如果 image 字段本身就已经是完整的 url 就直接返回
            if (Str::startsWith($this->attributes['image'], ['http://', 'https://'])) {
                return $this->attributes['image'];
            }
            return Storage::disk('public')->url($this->attributes['image']);
        }
    //模板中Laravel 的模型访问器会自动把下划线改为驼峰,所以 image_url 对应的就是 getImageUrlAttribute
    <div class="img"><img src="{{ $product->image_url }}" alt=""></div>

     

    $casts用法:将字段转换为期望的类型,目前可转换为以下类型:
    integer, real, float, double, string, boolean, object,array,collection,date,datetime 和 timestamp。
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
    

     

    protected $dates = ['last_used_at'];
    表示 last_used_at 字段是一个时间日期类型,在之后的代码中 $address->last_used_at 返回的就是一个时间日期对象(确切说是 Carbon 对象,Carbon 是 Laravel 默认使用的时间日期处理类)。
    

      

      

    控制器:

    1.条件查询与搜索

    public function index(Request $request)
        {
            // 创建一个查询构造器
            $builder = Product::query()->where('on_sale', true);
            // 判断是否有提交 search 参数,如果有就赋值给 $search 变量
            // search 参数用来模糊搜索商品
            if ($search = $request->input('search', '')) {
                $like = '%'.$search.'%';
                // 模糊搜索商品标题、商品详情、SKU 标题、SKU描述
                $builder->where(function ($query) use ($like) {
                    $query->where('title', 'like', $like)
                        ->orWhere('description', 'like', $like)
                        ->orWhereHas('skus', function ($query) use ($like) {
                            $query->where('title', 'like', $like)
                                ->orWhere('description', 'like', $like);
                        });
                });
            }
    
            // 是否有提交 order 参数,如果有就赋值给 $order 变量
            // order 参数用来控制商品的排序规则
            if ($order = $request->input('order', '')) {
                // 是否是以 _asc 或者 _desc 结尾
                if (preg_match('/^(.+)_(asc|desc)$/', $order, $m)) {
                    // 如果字符串的开头是这 3 个字符串之一,说明是一个合法的排序值
                    if (in_array($m[1], ['price', 'sold_count', 'rating'])) {
                        // 根据传入的排序值来构造排序参数
                        $builder->orderBy($m[1], $m[2]);
                    }
                }
            }
    
            $products = $builder->paginate(16);
    

      2.查出某个字段,对结果转为布尔类型,场景如某人是否收藏过此产品

    $favored = false;
    if($user = $request->user()){
        $favored = boolval($user->favoriteProducts()->find($product->id));
    //再传进模板里

     HTML篇

    1.form表单可以直提交成get形式.

    2. 分页后查询的input内容丢失,可将参数加进paginate 如

    <div class="float-right">{{ $products->appends($filters)->render() }}</div>

    3.下拉式查询 

                        <form action="{{ route('products.index') }}" class="search-form">
                            <div class="form-row">
                                <div class="col-md-9">
                                    <div class="form-row">
                                        <div class="col-auto"><input type="text" class="form-control form-control-sm" name="search" placeholder="搜索"></div>
                                        <div class="col-auto"><button class="btn btn-primary btn-sm">搜索</button></div>
                                    </div>
                                </div>
                                <div class="col-md-3">
                                    <select name="order" class="form-control form-control-sm float-right">
                                        <option value="">排序方式</option>
                                        <option value="price_asc">价格从低到高</option>
                                        <option value="price_desc">价格从高到低</option>
                                        <option value="sold_count_desc">销量从高到低</option>
                                        <option value="sold_count_asc">销量从低到高</option>
                                        <option value="rating_desc">评价从高到低</option>
                                        <option value="rating_asc">评价从低到高</option>
                                    </select>
                                </div>
                            </div>
                        </form>
                $('.search-form select[name=order]').on('change',function(){
                    $('.search-form').submit();
                })
  • 相关阅读:
    line-block,white-space,overflow
    JS操作cookie
    C#的位运算
    小常识:变量的修饰符和DEMO
    JS等号的小注释
    关于谷歌浏览器的小常识
    P2568 GCD
    P2522 [HAOI2011]Problem b
    P3455 [POI2007]ZAP-Queries
    P1447 [NOI2010]能量采集
  • 原文地址:https://www.cnblogs.com/bing2017/p/10838047.html
Copyright © 2011-2022 走看看