2015-04-08 3 views
1

Почему я получаю эту ошибку для такого простого запроса отношения?Плохое отношение

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

Вы использовали методTable (scope), который возвращает красноречивый построитель запросов, чтобы ваши отношения не были доступны. Рассмотрите тот же код, не вызывая этот метод.

Если вы хотите изменить таблицу модели создания экземпляра, а затем вызвать метод Устанавливаемое на созданный экземпляр затем использовать экземпляр для запроса

$instance = new PostCodeExtract(); 
$instance->setTable ("table"); 
$country = $instance->country()->........ 

К сожалению им на мобильный телефон не может обеспечить хороший пример кода, но вы может достичь этого с помощью этого метода