Laravel所属为可执行查询添加双引号

时间:2019-01-04 13:39:32

标签: php mongodb laravel eloquent

我将Laravel与MYSql和MongoDB连接一起使用。当使用MYSQL和MongoDB之间的属于Eloquent 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")
}

音频表包含相关的id 1。hasMany模型上的Audio关系可以正常工作,而反之则不起作用。

在通过将查询记录到日志文件中进行调试时,对belongsTo的查询如下所示,并且在PhpMyAdmin中使用相同的查询时,会引发语法错误:

  

[2019-01-04 18:41:13] production.INFO:从“ audios”中选择is.favourite中的audio。*,audios.id,其中(?)中的“ audios..id”和“ is_active” = ?

1 个答案:

答案 0 :(得分:0)

经过一整天的努力,

最终得到了解决方案。解决方案是添加

$connection  = 'mysql';

在Audios.php模型中,由于从AudioPlaylists模型中的关系归属于,因此由于缺少连接属性,因此尝试使用MongoDB实例来构建查询。