Laravel,Eloquent:关系。在一行中

时间:2018-05-31 18:55:28

标签: php laravel eloquent relationship

有3个实体。文章,用户和类别。 制品

class Article extends Model{
  public function user()
  {
     return $this->belongsTo(User::class);
  }

 public function category()
    {
      return $this->belongsTo(Category::class);
    }
}

用户

class User extends Authenticatable{
public function articles()
  {
      return $this->hasMany(Article::class);
  }

分类

class Category extends Model{
public function articles()
  {
    return $this->hasMany(Article::class);
  }
}

要保存在数据库中创建文章的用户,我在控制器中使用以下代码:

    class TestController extends Controller
{
    public function test()
    {
      $user = Auth::user();
      $article = new Article(['name' => 'test']);

      //save record
      $user->articles()->save($article);
}

}

但我还需要在文章的表格中保留文章的类别。 我收到控制器中的文章类别:

$category = Category::find(2);

但是如何在$ article中保存这两个实体($ user和$ category)。我需要在文章表中有两个单元格 - user_id和category_id。 请告诉我。

2 个答案:

答案 0 :(得分:2)

手动设置ID:

$article->user_id = Auth::id();
$article->category_id = $category->id;
$article->save();

答案 1 :(得分:1)

使用associate方法。

class TestController extends Controller
{
    public function test()
    {
        $user = Auth::user();
        $category = Category::first(); // find category

        $article = Article::create(['name' => 'test']); //save record

        $article->user()->associate($user); 
        $article->category()->associate($category);
    }
}