Merhabalar,
Projemde iki veritabanı bağlantısı kullanıyorum. Birisi Netsis'in uzak MSSQL veritabanı, diğeride lokal MySQL veritabanı.
MSSQL üzerinde cari kayıtların bulunduğu TBLCASABIT tablosu için oluşturduğum model:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* Class TBLCheckingAccount
* @package App
*/
class TBLCheckingAccount extends Model
{
/**
* @var string
*/
protected $connection = 'sqlsrv';
/**
* @var string
*/
protected $table = 'TBLCASABIT';
/**
* primaryKey
*
* @var integer
* @access protected
*/
protected $primaryKey = 'CARI_KOD';
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = false;
/**
* A list of methods protected from mass assignment.
*
* @var string[]
*/
protected $guarded = ['_token', '_method'];
/**
* @var bool
*/
public $timestamps = false;
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function user()
{
return $this->hasOne(User::class, 'code', 'CARI_KOD');
}
}
Lokal MySQL veritabanında bulunan users isimli tablo için oluşturduğum model:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* @var string
*/
protected $connection = 'mysql';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'firstname', 'lastname', 'email', 'username', 'password', 'locale', 'status',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function account()
{
return $this->belongsTo(TBLCheckingAccount::class, 'CARI_KOD', 'code');
}
}
TBLCheckingAccount isimli modelle MSSQL veritabanındaki TBLCASABIT tablosundan, sadece users tablosunda kaydı bulunanları çekmek istiyorum.
Bunun için şu şekilde bir sorgu yapıyorum:
<?php
$accounts = \App\TBLCheckingAccount::whereHas('user', function ($q) {
$q->where('code', '!=', '');
})->take(10)->get();
Fakat şu hatayı alıyorum:
SQLSTATE[HY000]: General error: 20018 Invalid object name 'users'. [20018] (severity 16) [(null)] (SQL: select top 10 * from [TBLCASABIT] where exists (select * from [users] where [TBLCASABIT].[CARI_KOD] = users.code and code != ))
Bu şekilde iki farklı bağlantı kullanan model arasında ilişkisel sorgu yapmanın bir yolu var mı? Yoksa ne önerirsiniz?