невозможно сохранить внешний ключ в моей таблице с помощью laravel 5.5 - PullRequest
0 голосов
/ 25 апреля 2018

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

, что я пытаюсь сделать, это есть business_id, которыйFK исходит из таблицы business_master:

Мой метод контроллера:

           $businessId = Input::get('business_id');
        $page = new Page();
        $page->page_name = Input::get('page_name');
        $page->page_url  = Input::get('page_url');
        $page->business()->attach($businessId);
        $page->business_id = $businessId;

        $page->save();
        $resultArray = ['status' => 1, 'message' => 'Page url added!', 'dataArray' => $page];

    }

и модель моей страницы:

        class Page extends Model
   {
       protected $table = 'page_master';

      protected $fillable = ['business_id','page_url','page_name'];

      public function business()
{
    return $this->hasMany('App\Business','business_id','id');
}

ошибка, которую я получаю, это

BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::attach()

я отчаянно хочу сохранить business_id (fk), но я не могу этого сделать, поэтому любая ваша помощь будет высоко оценена!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Удалить строку

$page->business()->attach($businessId);

Использовать только

$page = new Page();
$page->page_name = Input::get('page_name');
$page->page_url  = Input::get('page_url');
$page->business_id = $businessId;
$page->save();

Код будет работать для вас.

Хорошо, что вы используете $ fillable в качестве справкиВ Eloquent ORM, чтобы избежать массового присвоения таких полей, мы определяем список полей в модели под заполняемым, так что когда мы отправляем массив значений в модель, он будет непосредственно обрабатывать операцию, зависящую от действия типа create, обновить, удалить и т. д.

0 голосов
/ 25 апреля 2018

У вас есть ошибка, потому что только один экземпляр может быть присоединен во многих отношениях ко многим

$page->business()->attach($businessId);

Попробуйте бизнес create()

$page->business()->create([]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...