【问题标题】:Elasticquent call searchByQuery from Eloquent collectionEloquent 集合中的 Elasticquent 调用 searchByQuery
【发布时间】:2015-12-29 19:11:34
【问题描述】:

是否可以像这样从 Eloquent 集合中调用 Laravel 中的 searchByQuery 方法,例如:

Table1::with('table2')->searchByQuery()

如果我这样称呼它,我会得到一个错误:

调用未定义的方法 Illuminate\Database\Query\Builder::searchByQuery()

还有其他方法吗?

【问题讨论】:

    标签: laravel elasticsearch


    【解决方案1】:

    是的,您可以创建 scope documentation

    例如,在你的模型创建方法中

    public function scopeSearchByQuery($query)
    {
        return $query->where('something', '=', true);
    }
    

    然后,您可以在模型中调用此方法,例如 Model::searchByQuery()

    如果你需要给这个方法传递额外的参数你可以定义它

    public function scopeSearchByQuery($query, $something = '')
    {
        return $query->where('something', '=', $something);
    }
    

    并称它为Model::searchByQuery('test')

    编辑:我不知道你问的是弹性搜索包

    Elasticquent docs

    要调用此方法searchByQuery,您需要在模型中添加特征

    use Elasticquent\ElasticquentTrait;
    
    class YourModel extends Eloquent {
    
        use ElasticquentTrait;
    
    }
    

    【讨论】:

    • 我想你不能用with 方法调用searchByQuery,因为searchByQuery 不是作用域方法。 with 返回没有search... 方法的构建器
    • 您知道如何加入这两个表并调用 searchByQuery 吗?
    • 其实我觉得不可能
    猜你喜欢
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2018-11-11
    • 2014-04-02
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多