如何将常规查询更改为laravel查询(laravel 5)?

如何将常规查询更改为laravel查询(laravel 5)?,laravel,laravel-5,Laravel,Laravel 5,我的常规查询如下: SELECT a.nationality_id, a.nationality_name, b.province_name, c.city_name FROM tb_general_nationality a JOIN tb_search_province b ON a.nationality_id = b.country_id JOIN tb_search_city c ON b.province_id = c.province_id WHERE b.country_id =

我的常规查询如下:

SELECT a.nationality_id, a.nationality_name, b.province_name, c.city_name
FROM tb_general_nationality a
JOIN tb_search_province b ON a.nationality_id = b.country_id
JOIN tb_search_city c ON b.province_id = c.province_id
WHERE b.country_id = 50
我将查询更改为laravel查询,如下所示:

SELECT a.nationality_id, a.nationality_name, b.province_name, c.city_name
FROM tb_general_nationality a
JOIN tb_search_province b ON a.nationality_id = b.country_id
JOIN tb_search_city c ON b.province_id = c.province_id
WHERE b.country_id = 50
服务:

public function listCity($param=null) 
    {
        $city = City::with('province','country')->where('tb_search_province.country_id',$param)->get();        
        echo json_encode($city);        
    }
型号:

城市模式:

namespace App\Models\City;

use Illuminate\Database\Eloquent\Model;

class City extends Model {

    protected $connection = 'pgsql';        

    protected $table = 'tb_search_city';

    public function province()
    {
        return $this->belongsTo('App\Models\Province\Province','province_id','province_id');
    }                  

}
国家模式:

namespace App\Models\Country;

use Illuminate\Database\Eloquent\Model;

class Country extends Model {

    protected $connection = 'pgsql';        

    protected $table = 'tb_general_nationality';

}
省模式:

namespace App\Models\Province;

use Illuminate\Database\Eloquent\Model;

class Province extends Model {

        protected $connection = 'pgsql';        

        protected $table = 'tb_search_province';

        public function country()
        {
            return $this->belongsTo('App\Models\Country\Country','nationality_id','country_id');
        }      

    }
但是,我的laravel查询不起作用。 存在错误。错误如下所示:

SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "tb_search_province"
LINE 1: select * from "tb_search_city" where "tb_search_province"."c...
^ (SQL: select * from "tb_search_city" where "tb_search_province"."country_id" = 50)
我的桌子是这样的:

tb_search_city (city_id, province_id, city_name)
tb_search_province (province_id, country_id, province_name)
tb_general_nationality (nationality_id, nationality_name)
如何将常规查询更改为laravel查询


非常感谢

我不确定这是否会导致问题,但我相信您应该是
$this->belongsTo('App\Models\Country',等等。
只有一个
国家
。此外,可能会有所帮助。在with函数中,您必须键入province.Country,因为这是一种嵌套关系。