2015-07-26 3 views
2

Я настроил полиморфный соотношение где структура таблицы как:форма модель связывания для полиморфных отношений

companies 
    id - integer 
    name - string 

company_branches 
    id - integer 
    name - string 

incharges 
    id - integer 
    name - string 
    inchargable_id - integer 
    inchargable_type - string 

Я также создать модели, соответственно, и данные сохранены правильно. Проблема, с которой я сталкиваюсь, показывает данные таблицы incharges во время редактирования, используя привязку модели. Представление для редактирования, как:

{!! Form::model($company, array("route" => array("companies.update", $company->id), "method"=>"PUT", "files"=>true)) !!} 

    <label>Company Name</label> 
    <div> 
     {!! Form::text('name') !!} 
    </div> 

    <label>Incharge Name</label> 
    <div> 
     {!! Form::text('incharge_name') !!} 
    </div>   

{!! Form::close() !!} 

данных, который появляется в name текстовом поле во время редактирования правильно. Но как я могу отобразить имя для подзаголовки для редактирования? Я могу получить имя пополнить, выполнив $company->incharge->name.

EDIT: В PersonInCharge модели, я настроил полиморфного отношения как:

public function inchargable() 
{ 
    return $this->morphTo(); 
} 

В Company модели:

public function incharge() 
{ 
    return $this->morphOne('PersonInCharge', 'inchargable'); 
} 

В CompanyBranch модели:

public function incharge() 
{ 
    return $this->morphOne('PersonInCharge', 'inchargable'); 
} 
+0

Как вы передаете данные с контроллера? –

+0

Да. Если я сделаю 'echo $ company-> incharge-> name' в представлении, я могу увидеть правильный результат. – SUB0DH

ответ

2

Try, {!! Form::text('incharge[name]') !!}

Дальше больше вам нужно (lazy) -eager-load ваше отношение для привязки модели модели. Вы можете использовать Model::with('realtion') или установить $with = ['relation'] в вашей модели Eloquent. Дополнительная информация о Laravel (Lazy-)Eager-Loading.

+0

Я пробовал, и он, похоже, не работает. – SUB0DH

+0

@ SUB0DH вы пытались (лениво) -потребить свое отношение? – dschniepp

+0

Нежелательная загрузка отношения. Спасибо за помощь. Я думал, что нетерпевая загрузка произойдет автоматически при использовании функций морфинга для полиморфизма. – SUB0DH

1

Tr у:

{!! Form::text('incharge_name', $company->incharge->name) !!} 

Добавить в присоединиться к контроллеру таким образом: (! нужно использовать правильные поля, хотя)

$company = Company::where('id',$companyID) 
     ->leftJoin('incharges', 'inchargable_id.company_id', '=', 'company.id') 
     ->first(); 

+0

Это работает, но мне нужно, чтобы это было сделано автоматически через привязку модели модели, чтобы мне не пришлось делать что-то вроде этого. – SUB0DH

+0

Я предполагаю, что вам нужно будет «присоединиться» к вашей таблице дюймов каким-то образом. Обновленный мой ответ с непроверенной идеей ... –

+0

Хотя ваш ответ может быть правильным, это не тот, который я ищу. Во всяком случае, спасибо за помощь. – SUB0DH