我使用laravel与mysql和mongodb连接。在使用下面的语句来解释MySQL和MongoDB之间的ORM关系时,出现了以下错误:
“调用prepare()上的成员函数null
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');
    }
}

Mongo系列:
{
    "_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")
}

音频表包含相关的id1。hasManys模型上的Audio关系工作正常,而逆关系不工作。
当通过将查询记录在日志文件中进行调试时,对belongsto的查询如下所示,当在phpmyadmin中使用相同的查询时,会抛出语法错误:
[2019-01-04 18:41:13]production.info:选择audios.*,audios.id作为“audios”中的“audios”,其中“audios”。(?)中的“id”和“是否活动”=?

最佳答案

经过一整天的挣扎终于找到了解决办法。解决办法是加上,

$connection  = 'mysql';

在audios.php模型中,由于audioplaylists模型中属于sto的关系尝试使用mongodb实例构建查询,因为缺少connection属性。

09-27 03:51