Вызов функции-члена prepare () для нулевых отношений Laravel Mongo и MySQL - PullRequest
4 голосов
/ 13 октября 2019

У меня проблемы с настройкой приложения для использования отношений между MongoDB и Mysql. У меня есть модель User по умолчанию, это модель SQL.

class User extends Authenticatable implements JWTSubject {
    use HasRoles;
    use Notifiable;
    use HybridRelations;

    protected $guard_name = 'web';

    // Relations
    public function posts() {
        return $this->hasMany( Post::class, 'userId', 'id' );
    }
}

И класс Post, который является моделью монго.

class Post {
    use HybridRelations;
    protected $connection = 'mongodb';
    protected $primaryKey = "id";
    protected $collection = "posts";

    // Relations
    public function authorUser() {
        return $this->belongsTo( User::class, 'userId', 'id' )->withDefault();
    }
}

Но когда я запрашиваюwith('posts') следующее исключение выдается.

   "Call to a member function prepare() on null"

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

Пожалуйста, помогите с проблемой.

С уважением.

1 Ответ

2 голосов
/ 13 октября 2019

У меня была похожая проблема. Когда вы имеете дело с несколькими базами данных, вам нужно явно указать имя соединения.

Вы установили его в классе Post, но пропустили его в классе User.

КакВ результате вы получаете сообщение об ошибке.

Попробуйте изменить свой код следующим образом:

class User extends Authenticatable implements JWTSubject {
    use HasRoles;
    use Notifiable;
    use HybridRelations;
    protected $connection = 'mysql';

    protected $guard_name = 'web';

    // Relations
    public function posts() {
        return $this->hasMany( Post::class, 'userId', 'id' );
    }
}

Измените mysql на имя настроенного соединения в файле конфигурации config/database.php,Это должно решить проблему.

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