【问题标题】:I want to Create One to Many Relationship | with If Condition | (Category has many Subcategories)我想创建一对多关系 | If 条件 | (类别有很多子类别)
【发布时间】:2021-02-08 10:09:14
【问题描述】:

我想创建一个类别,如果他们有一个parent categoryId,那么更新父 id,并在subcategory Table 上更新categoryName。如果他们没有父 ID,它会保存在带有类别名称的 parent Category table 上。你能更正我的关系代码吗?我认为这是错误的。非常感谢你帮助我

在类别模型(父)中

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

在子类别模型中,

class Subcategory extends Model

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

在控制器中,

public function store(Request $request){
    //dd($request->categoryid);
    if($request->categoryid){ 
       $subcategory = new Subcategory();
       $subcategory->name = $request->subcatname;
       $subcategory->save(); 

     $category = $request->categoryid;
       //dd($category);
       $subcategory->category()->attach($category); 

    } 
       $category = new Category();
       $category->name = $request->catname;
       $category->save();
    }

在 dd($request)

  +request: Symfony\Component\HttpFoundation\ParameterBag {#44 ▼
    #parameters: array:3 [▼
      "_token" => "z8kJy323B1Af27dKfHRHRHW1ON9NKHuP8DmYW06e"
      "subcatname" => "Samsung"
      "categoryid" => "1"
    ]
  }

【问题讨论】:

    标签: laravel laravel-5 eloquent laravel-6 laravel-7


    【解决方案1】:

    以相同的格式发布您的数据会很有帮助,例如,如果您想提交一个类别然后只发布该类别的名称,或者如果您想创建子类别,那么发布数据将类别 ID 和子类别的名称,然后您可以使用 laravel eloquent mapping 以这种方式创建您的记录。

    if($request->categoryid)
    { 
       $category= Category::find($request->categoryid);
       $subcategory = $category->subcategories()->create($request->all());
    } 
    else{
      $category = new Category();
      $category = $category->create($request->all());
    }
    

    【讨论】:

    • SQLSTATE[HY000]:一般错误:1364 字段“名称”没有默认值(SQL:插入subcategoriescategory_idupdated_atcreated_at)值(1, 2020-10-26 06:47:09, 2020-10-26 06:47:09)) 我收到了这个错误。
    • 在您的帖子数据中将您的sucatname 更改为name,然后检查@RoomalJayaratne
    【解决方案2】:
    if ($request->exists('categoryid')) {
       $category = Category::findOrFail($request->categoryid)
                    ->subcategories()->create($request->all());
    } else {
       $category = Category::create($request->all());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 2021-03-29
      • 2016-12-04
      相关资源
      最近更新 更多