Laravel在相关表格中进行多次搜索

时间:2017-01-19 09:04:37

标签: mysql laravel eloquent left-join

我有两个与城镇相关的表格。 (镇属于城市,城市有很多镇)

城镇表: id,name,city_id

城市表: id,name

对于自动完成ajax查询,我可以通过sql查询获得结果。

Select t.id AS townid, t.name AS townname, c.name AS cityname FROM towns t 
left join cities c ON t.city_id=c.id
where t.name like '%ana%' OR c.name like '%ana%';

所以我得到了我想要的结果。但在拉拉维尔,我无法做到这一点。 我可以在城镇搜索但不搜索城市名称。

    $towns = App\Town::with('city')->where('name', 'like', '%ana%')->get();

2 个答案:

答案 0 :(得分:0)

尝试以下代码

function update() {
var barValue = 0;
var maxValue = 100;
setInterval(function() {
       //var barValue = (1 + 100 * Math.random());  
        barValue += 5;
        progressBar.setPercentDone(barValue);
        //progressBar.animateShow();
         if (barValue >= maxValue) clearInterval(progressbar);
        progressBar.animateShow();

        console.log(barValue);

答案 1 :(得分:0)

Laravel Elequent with()不会加入,因此您无法在城镇搜索。

要进行与abouse相同的查询,您必须使用正确的laravel join。

类似于:

public static Integer tryParseInteger(String input) {
    try {
        return Integer.parseInt(input);
    } catch (NumberFormatException e) {
        return null;
    }
}

但在此示例中,请检查所选内容。您还可以指定要选择的字段($towns = App\Town::leftJoin('cities', 'towns.city_id', '=', 'cities.id') ->where('towns.name', 'like', '%ana%')->orWhere('cities.name', 'like', '%ana%')->get(); )。