laravel orm 切库问题
家人们,咋就是说写的全局查询作用域为啥不生效呢
我是一个独立库没有商家id,一个sass库有商户id,这两个库的表和数据结构完全一直 我要做sass和平台的区分,所以只要切个库,加个where商户id条件限制就好了,我是这么写的
<?php
namespace App\Models;
use App\SassScope;
class Model extends \Illuminate\Database\Eloquent\Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope(new SassScope());
}
}
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class SassScope implements Scope
{
public function apply(Builder $builder, Model $model)
{
if (request()->has('merchant_id') && ! app()->runningInConsole()) {
$model->setConnection('sass');
$builder->where('merchant_id', app('request')->input('merchant_id'));
}
}
}
<?php
namespace OfferEasy\Website\WWW\Models;
//use Illuminate\Database\Eloquent\Model;
/**
* Class Course 地区
* @package OfferEasy\Website\WWW\Models
*/
class Area extends Model
{
protected $connection = 'www';
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
放到 booted 而不是 boot 函数里面看下。
這個感覺只能一步步去調試了 dd一下 先看是否有執行apply方法 沒有再往上找 我一般都是在源碼包裡面一步步dd
我的感覺也和你的類似 但是我的是在同一個數據庫下面有多個庫 所以我只有1個連接配置 然後在中間件裡面切換庫 但是感覺這種會麻煩一些 隊列 腳本 定時任務這些都需要做特殊處理 主要是我的定時任務還是基於數據庫操作的
是因为切库太迟了,要在构造处就得切
做saas的,你直接用github.com/archtechx/tenancy 这个库