标签 php 下的文章

通过修改 vim /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/php@7.4.rb
注释掉 disable

#  disable! date: "2022-11-28"

安装后会提示下面的错误
2023-02-08T09:46:36.png

通过重装命令解决问题

brew reinstall --build-from-source php@7.4

2023-02-08T09:49:59.png

app/Admin/bootstrap.php 添加扩展


Encore\Admin\Form::extend('DateMultiple', App\Admin\DateMultiple::class);

创建 DateMultiple

<?php

namespace App\Admin;

class DateMultiple extends \Encore\Admin\Form\Field\DateMultiple
{
    protected static $css = [
        '/statics/js/npm/flatpickr@4.6.13/flatpickr.min.css',
        '/statics/js/npm/shortcut-buttons-flatpickr@0.3.0/light.min.css',

    ];

    protected static $js = [
        '/statics/js/npm/flatpickr@4.6.13/flatpickr.js',
        '/statics/js/npm/shortcut-buttons-flatpickr@0.1.0/shortcut-buttons-flatpickr.min.js',
        '/statics/js/npm/flatpickr@4.6.6/zh.js',
    ];
}

在laravel中,使用DB查询数据库后,如果在 get() 后直接使用 toArray() 返回的数据是 php 标准的 stdClass

$goods = DB::connection('system')
        ->table('group_buy_goods')
        ->get(['id', 'name', 'sold_price']);
dd($goods->toArray());

2022-04-19T03:51:27.png

如果想把对象改为数组可以使用 map 方法修改数据格式

$goods = Db::connection('system')
        ->table('group_buy_goods')
        ->get(['id', 'name', 'sold_price'])
        ->map(function ($value) {
            return (array)$value;
        });
dd($goods->toArray());

2022-04-19T03:54:35.png

使用 Eloquent 模型查询的数据是数组
GroupBuyGoods::query()->get()->toArray()

感兴趣的可以试下

使用 easywechat 拓展包模拟用户登陆的时候出现无法模拟的情况,经过反复测试发现以下问题:

Laravel 方法最后才会写入session
die 停止了后面的代码,(写入 session 等)

别用 exit,dd 等函数停止,使用return, 让后续代码执行。

Session::save() 执行写入 session

如下代码会使 easywechat 的默认中间件 'wechat.oauth' => \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate::class, 无法正确获取 session 信息
public function mock()
    {
        if (app()->environment() === 'local') {

            $sessionKey = 'wechat.oauth_user.default';
            $user = new User([
                "id"       => "oaa2vs-HAjs0s4_yUWQai0P0pvZk",
                "name"     => "NULL",
                "nickname" => "NULL",
                "avatar"   => "https://thirdwx.qlogo.cn/mmopen/vi_32/n8QhTK8Q0dAOsWy0CS66PJ8yLcRUZ7UctHEYzTDet74ibPeeqD7f2QhXXDh5zL7INZaZy8ZMXbicwYHiaibOewHYXw/132",
                "email"    => null
            ]);
            session([$sessionKey => $user]);

            dd($user);
        }
        dd('当前环境无法模拟');
    }

将上述代码中的 dd 改为 return 即可正常获取会话数据

public function mock()
    {
        if (app()->environment() === 'local') {

            $sessionKey = 'wechat.oauth_user.default';
            $user = new User([
                "id"       => "oaa2vs-HAjs0s4_yUWQai0P0pvZk",
                "name"     => "NULL",
                "nickname" => "NULL",
                "avatar"   => "https://thirdwx.qlogo.cn/mmopen/vi_32/n8QhTK8Q0dAOsWy0CS66PJ8yLcRUZ7UctHEYzTDet74ibPeeqD7f2QhXXDh5zL7INZaZy8ZMXbicwYHiaibOewHYXw/132",
                "email"    => null
            ]);
            session([$sessionKey => $user]);

            return($user);
        }
        return('当前环境无法模拟');
    }