Я использую Laravel с соединениями MYSql и MongoDB. При использовании отношения Eloquent ORM между MYSQL и MongoDB я получаю следующую ошибку:
"Call to a member function
prepare()onnull"
Модель MySQL: Audios.php
class Audios extends Model
{
protected $table = 'audios';
public function getAudioPlaylist()
{
return $this->hasMany('AudioPlaylists:;class','id','audio_id');
}
}
Модель Mongo: AudioPlaylist.php
use Jenssegers\Mongodb\Eloquent\Model as MongoModel;
class AudioPlaylist extends MongoModel
{
protected $collection = 'audio_playlists';
protected $connection = 'mongodb';
public function playlistAudioTracks()
{
return $this->belongsTo(Audios::class, 'audio_id', 'id');
}
}
Коллекция Монго:
{
"_id" : ObjectId("5c2f519368c5f214022c4102"),
"playlist_id" : "5c2cace668c5f2382e5ef464",
"audio_id" : 1,
"updated_at" : ISODate("2019-01-04T12:29:07Z"),
"created_at" : ISODate("2019-01-04T12:29:07Z")
}
Звуковая таблица содержит соответствующий id 1. Отношение hasMany на модели Audios работает нормально, тогда как обратное не работает.
При отладке путем регистрации запросов в файле журнала запрос для ownTo был таким, как показано ниже, а при использовании того же самого в PhpMyAdmin он выдавал синтаксическую ошибку:
[2019-01-04 18:41:13] production.INFO: select audios.*,audios.id as is_favourite from "audios" where "audios"."id" in (?) and "is_active" = ?






наконец получил решение после долгого дня борьбы. Решение заключалось в том, чтобы добавить:
$connection = 'mysql';
в модели Audios.php, поскольку отношение ownTo из модели AudioPlaylists пытается сформировать запрос с использованием экземпляра MongoDB, поскольку атрибут подключения отсутствует.
'AudioPlaylists:;class'- это опечатка?