无法使用laravel 5.5将外键保存到我的表中

时间:2018-04-25 12:25:09

标签: php laravel

我正在尝试将来自另一个表的外键保存到我的控制器方法中,但是我无法在此问题中保存此内容:

我想在这里做的是有来自business_master表的FK的business_id:

我的控制器方法:

           $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 :(得分:0)

您有一个错误,因为只有实例可以附加到多个关系中

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

尝试商务create()

$page->business()->create([]);

答案 1 :(得分:0)

删除行

function1()
{
  for-loop1{ function2(); } //line 2
}

function2()
{
  for-loop2(); 
}

仅限使用

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

该代码适合您。

你使用$ fillable是好的,因为它有助于在Eloquent ORM中避免大量分配这些字段,我们在fillable下定义模型中的字段列表,这样当我们发送值的数组时model它将直接处理操作取决于创建,更新,删除等操作。