如何将常规查询更改为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,因为这是一种嵌套关系。