为什么我会为这种简单的关系查询收到此错误?
Call to undefined method Illuminate\Database\Query\Builder::country()
我只想从查询表中获取一个名为pc_country
的查找值列表。我甚至包括名称空间!
控制器;
$tableName = $postcode_tablename->dataset; //eg 201502_postcode
$country = PostcodeExtract::fromTable($tableName)
->country() //this is generating the error!
->distinct()
->select('description')
->get();
var_dump($country);
exit;
国家模式;
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Country extends Model {
protected $connection = 'postcodes';
public $table = 'pc_country';
protected $fillable = ['description', 'country_id', 'code'];
public function postcodeExtract()
{
return $this->hasMany('App\Models\PostcodeExtract');
}
}
PostCode Extract Model;
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PostcodeExtract extends Model {
protected $connection = 'postcodes';
protected $fillable = ['country'];
public function scopeFromTable($query, $tableName)
{
return $query->from($tableName);
}
public function country()
{
return $this->belongsTo('App\Model\Country');
}
}
我的201502_postcode
表格有country_id
,我的pc_country
表格有一个id
字段供您查询。那是对的吗?我没有看到问题...
答案 0 :(得分:0)
您使用了fromTable方法(范围),它返回了雄辩的查询构建器,因此您的关系将无法使用。在不调用该方法的情况下考虑相同的代码。
如果要更改模型表创建实例,然后在创建的实例上调用setTable方法,则使用实例查询
$instance = new PostCodeExtract();
$instance->setTable ("table");
$country = $instance->country()->........
很抱歉,我在移动设备上无法提供良好的示例代码,但您可以使用此方法实现该目标