Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

orm 多库链接的情况无法在模型中通过$connection指定连接 #105

Open
huey-deng opened this issue Nov 25, 2024 · 0 comments
Open

Comments

@huey-deng
Copy link

orm 多库链接的情况无法在模型中通过$connection指定连接
指定第二个库时,查询列表会报错 说第一个库不存在某表
排查到原因是
` protected function selectInput(Request $request): array
{
$field = $request->get('field');
$order = $request->get('order', 'asc');
$format = $request->get('format', 'normal');
$limit = (int)$request->get('limit', $format === 'tree' ? 1000 : 10);
$limit = $limit <= 0 ? 10 : $limit;
$order = $order === 'asc' ? 'asc' : 'desc';
$where = $request->get();
$page = (int)$request->get('page');
$page = $page > 0 ? $page : 1;
$table = config('plugin.admin.database.connections.mysql.prefix') . $this->model->getTable();

    $allow_column = Util::db()->select("desc `$table`");
    if (!$allow_column) {
        throw new BusinessException('表不存在');
    }
    $allow_column = array_column($allow_column, 'Field', 'Field');
    if (!in_array($field, $allow_column)) {
        $field = null;
    }
    foreach ($where as $column => $value) {
        if (
            $value === '' || !isset($allow_column[$column]) ||
            is_array($value) && (empty($value) || !in_array($value[0], ['null', 'not null']) && !isset($value[1]))
        ) {
            unset($where[$column]);
        }
    }
    // 按照数据限制字段返回数据
    if (!Auth::isSuperAdmin()) {
        if ($this->dataLimit === 'personal') {
            $where[$this->dataLimitField] = admin_id();
        } elseif ($this->dataLimit === 'auth') {
            $primary_key = $this->model->getKeyName();
            if (!Auth::isSuperAdmin() && (!isset($where[$primary_key]) || $this->dataLimitField != $primary_key)) {
                $where[$this->dataLimitField] = ['in', Auth::getScopeAdminIds(true)];
            }
        }
    }
    return [$where, $format, $limit, $field, $order, $page];
}`

中config('plugin.admin.database.connections.mysql.prefix') 写死了这个mysql

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant