gpt4 book ai didi

php - 通过数据透视表进行 Eloquent or 查询

转载 作者:行者123 更新时间:2023-11-29 12:49:34 26 4
gpt4 key购买 nike

我有这 2 个型号

Track
id
name
artist_id

Artist
id
name


class Song extends \Eloquent{
public function artist(){
return $this->hasOne('Artist','id', 'artist_id');
}
}
class Artist extends \Eloquent{
public function songs(){
return $this->hasMany('Song', 'artist_id', 'id');
}
}

现在我想实现一个搜索词“happy pharrel”的搜索。我很清楚,我必须搜索歌曲名称为“happy”或艺术家名称为“happy”的歌曲以及歌曲名称为“pharel”的歌曲或者艺术家的名字是“pharel”。

现在我想知道如何对歌曲表和艺术家表进行这样的查询?

最佳答案

您的代码显示您已经指定了表/类之间的关系——这很好,但我认为它在搜索时不一定有帮助。这是保持语法整洁的好方法,也适用于 eager loading ,但是您最好为需要搜索不同表上不同列的搜索词编写一个新查询。

我正在考虑这样的事情,在用户提交搜索时调用的 Controller 方法中:

$keywords = explode(' ', Input::get('search'));

$results = Song::join('artists', 'songs.artist_id', '=', 'artists.id')
->whereIn('artists.name', $keywords)
->orWhereIn('songs.name', $keywords)
->get();

这相当简单,但应该足以让您入门。

关于php - 通过数据透视表进行 Eloquent or 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24972152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com