Laravel принадлежит добавляет двойные кавычки в исполняемый запрос - PullRequest
0 голосов
/ 04 января 2019

Я использую Laravel с подключениями MYSql и MongoDB. При использовании отношения ORSTOST Eloquent ORM между MYSQL и MongoDB выдает следующую ошибку:

"Вызов функции-члена prepare() on null"

Mysql Модель: Audios.php

class Audios extends Model
{
    protected $table = 'audios';

    public function getAudioPlaylist()
    {
        return $this->hasMany('AudioPlaylists:;class','id','audio_id');
    }
 }

Модель Монго: 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 на модели Audio s работает нормально, тогда как обратное не работает.

При отладке путем регистрации запросов в файле журнала, запрос для ownTo был таким, как показано ниже, а при использовании того же самого в PhpMyAdmin он выдавал синтаксическую ошибку:

[2019-01-04 18:41:13] production.INFO: выберите audios. *, Audios.id как is_favourite из "audios", где "audios". "Id" в (?) И "is_active" = ?

1 Ответ

0 голосов
/ 07 января 2019

наконец-то получил решение после долгого дня борьбы. Решение было добавить,

$connection  = 'mysql';

в модели Audios.php, так как отношение ownTo из модели AudioPlaylists пытается сформировать запрос, используя экземпляр MongoDB, так как атрибут соединения отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...