Я пытаюсь создать веб-приложение базы данных поставщика ресурсов с настройкой ресурсов, местоположения, ресурсов (сводной таблицы) и 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
. Что я здесь делаю неправильно? Любая помощь будет принята с благодарностью, спасибо!