Laravel - Где на связи из другой базы данных - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь применить условие для объединенной таблицы, но получаю эту ошибку:

SQLSTATE [42S02]: базовая таблица или представление не найдены: 1146 Таблица 'cts.plant'не существует (SQL: выберите * из tbl_complaint, где существует (выберите * из tbl_plant, где tbl_complaint. made_in_plant = tbl_plant. plant_id и sap_code = 99999), упорядочите по createddesc limit 50 offset 0)

Мои классы моделей выглядят примерно так:

Основная модель

    class Complaint extends Model {
        protected $connection= 'first';
        protected $table = 'complaint';
        protected $primaryKey = 'complaint_id';

    public function  customerPlant() {
        return $this->hasOne(Plant::class, 'plant_id', 'customer_plant_id')
                    ->select('plant_id', 'sap_code', 'plant_name');
    }
}

Подключенная модель

class Plant extends Model {
    protected $connection= 'second';
    protected $table = 'plant';
    protected $primaryKey = 'plant_id';

    public function getKeyName() {
        return 'plant_id';
    }
}

Поиск данных:

    $query = Complaint::with([
        'madeInPlantId']
    $query = Complaint::whereHas('madeInPlant', function($query){
        $query->where('sap_code','=','99999');
    });
    $query->get();

Я думаю, что проблема в том, что я не указываю, что связанная таблица находится в другой базе данных.

1 Ответ

0 голосов
/ 04 декабря 2018

если ваши таблицы находятся на одном сервере, но в разных базах данных, вы можете сделать это.

class Complaint extends Model {
    protected $table = 'cts.complaint';
    protected $primaryKey = 'complaint_id';

    public function  customerPlant(){
        return $this->hasOne(Plant::class, 'plant_id', 'customer_plant_id')
                ->select('plant_id', 'sap_code', 'plant_name');
    }
}

class Plant extends Model{
    protected $table = 'otherdatabase.plant';
    protected $primaryKey = 'plant_id';

    public function getKeyName() {
        return 'plant_id';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...