Laravel 多租户 Return 不明确的键

Laravel Multi Tenancy Return Ambigous Key

在我的 laravel 项目中,我正在使用多租户,当我使用 Elequent 在我的表之间进行连接时,它 returns 列 'user_id' 中的 where 子句不明确 这是我的租赁代码:

<?php
namespace App\Traits;

use Illuminate\Database\Eloquent\Builder;

trait MultiTenintable
{
    public static function bootMultiTenintable()
    {
        if (auth()->check()) {
            static::creating(function ($model) {
                $model->user_id=auth()->id();
            });

            static::addGlobalScope('user_id', function (Builder $builder) {
                
                return $builder->where('user_id', auth()->id());
            });
        }
    }
 

您将进行的每个查询都会有一个 where user_id = ?,因此您必须强制使用 table 名称:

 public static function bootMultiTenintable()
    {
        if (auth()->check()) {
            static::creating(function ($model) {
                $model->user_id=auth()->id();
            });

            static::addGlobalScope('user_id', function (Builder $builder) {
                
                return $builder->where((new self())->getTable() . '.user_id', auth()->id());
            });
        }
    }