Мне очень трудно пытаться использовать элементы «Сфера» и «Отношения» в одном и том же запросе.Использование области и отношений внутри одного и того же запроса
В таблице 201502_postcode
есть столбец gor
, который имеет внешний ключ в таблице pc_gor_030315
. В конечном итоге я хочу вернуть/отобразить столбец description
в пределах pc_gor_030315
таблицы.
Я использую область действия, потому что имена моих таблиц могут измениться. Не беспокойтесь об этом. У меня уже есть код для этого. Для простоты я назвал таблицы 201502_postcode
и pc_gor_030315
.
В настоящий момент я получаю следующее сообщение об ошибке;
Call to undefined method Illuminate\Database\Query\Builder::lookupTable()
Это мой контроллер;
$list = PostcodeExtract::fromTable('201502_postcode')
->lookupTable('pc_gor_030315')
->distinct()
->select('description')
->get();
var_dump($list);
Это моя PostcodeExtract
модель;
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PostcodeExtract extends Model {
protected $connection = 'postcodes';
public function scopeFromTable($query, $tableName)
{
return $query->from($tableName);
}
public function gorLookup()
{
//'oldcode' is the local key
return $this->belongsTo('App\Model\GorLookup', 'oldcode');
}
}
И вот мой GorLookup;
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class GorLookup extends Model {
protected $connection = 'postcodes';
protected $fillable = array('description', 'oldcode');
public function postcodeExtract()
{
return $this->hasMany('App\Models\PostcodeExtract', 'oldcode');
}
public function scopeLookupTable($query, $lookupTable)
{
return $query->join($lookupTable);
}
}