2016-07-30 5 views
0

Я пытаюсь создать веб-приложение базы данных поставщика ресурсов с настройкой ресурсов, местоположения, ресурсов (сводной таблицы) и ContactPerson. Я уверен, что у меня установлены отношения Model правильно, потому что из моей формы Create New Resource он вставляет данные в базу данных, он просто не отображается в моем представлении, потому что внешние ключи (Resource_ID & Location_ID) aren ' t вставлен в сводную таблицу. Вот код, который у меня есть.Вставка двух внешних ключей в сводную таблицу после отправки формы с использованием Laravel

Модели

class Location extends Model 
 
{ 
 
    public function resource() 
 
    { 
 
    return $this->belongsToMany('App\Models\Resource', 'ResourceLocation'); 
 
    } 
 
} 
 

 
class Resource extends Model 
 
{ 
 
    public function locations() 
 
    { 
 
     return $this->belongsToMany('App\Models\Location', 'ResourceLocation'); 
 
    } 
 
} 
 

 
class ResourceLocation extends Model 
 
{ 
 
    protected $table = 'ResourceLocation'; 
 

 
    public $timestamps = false; 
 

 
    protected $fillable = [ 
 
     'Location_ID', 
 
     'Resource_ID' 
 
    ]; 
 
}

Controller Resource

public function newResource(CreateNewResourceRequest $req) 
 
{ 
 
    $resource = Resource::create(Request::only(
 
\t 'Name', 
 
\t 'Description', 
 
\t 'Misc_Info' 
 
    )); 
 

 
    $location = Location::create(Request::only(
 
\t 'Address', 
 
\t 'Address2', 
 
\t 'City', 
 
\t 'Zip_Code', 
 
\t 'County', 
 
\t 'Hours', 
 
\t 'Appt_Necessary' 
 
    )); 
 
\t $resource->save(); 
 
\t \t 
 
\t $resource->location()->attach($location); 
 

 
    \Session::flash('flash_message', 'Resource Created Successfully!'); 
 

 
    return redirect('resource'); 
 
}

После того, как я нажал кнопку представить на моей форме, я получаю ошибку:

BadMethodCallException in Builder.php line 2345: Call to undefined method Illuminate\Database\Query\Builder::location()

Все входные от моей формы Вставляется в мои таблицы базы данных, но ResourceLocation (поворотный стол) остается пустым.

Если у меня $resource->$location()->attach($location['Location_ID']);, это дает мне ошибку Method must be a string. Что я здесь делаю неправильно? Любая помощь будет принята с благодарностью, спасибо!

ответ

0

Я понял это, на мой контроллер ресурсов у меня есть метод определения местоположения:

public function location() 
 
{ 
 
    $locations = Location::all 
 
    return view (compact('locations')); 
 
}

Я изменил мой newResource метод:

public function newResource(CreateNewResourceRequest $req) 
 
{ 
 
    ... 
 

 
    $resource->save(); 
 
    $resource->locations()->attach($locations); 
 
}

Смежные вопросы