Besoin d'aide ?

repost (proble insertion )

  • Avatar de Stone
    Membre depuis :
    13/03/2017
    Messages :
    24

    jai un soucis avec linsertion de cle etrangere en utulisant la remation many to many

    erreur:
    SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'article_id' cannot be null (SQL: insert into article_tag (article_id, tag_id) values (, 18))

    code d'ajout:
    public function store(Request $request)
    {

    $parameters = $request->except(['_token']);

    //var_dump($parameters); die;

    //Infos::create($parameters);

    //Ajout dans la base de donne

    $date = new \DateTime(null);

    $articles = new Article();

    if($request->hasFile('image')){

    $image = $request->file('image');

    $filename = time() . '.' . $image->getClientOriginalExtension();

    Image::make($image)->resize(559,400)->save('assets/images/' .$filename);

    }

    $articles->titre = $parameters['titre'];

    $articles->logo = $filename;

    //$articles->type = $parameters['type'];

    $articles->categorie = $parameters['categorie'];

    $articles->contenu = $parameters['contenu'];

    $articles->slug = Str::slug($parameters['titre']. $date->format('dmYhis'));

    // $post = Article::create($request->all());

    $articles->saveTags($request->get('tags'));

    $articles->save();

    Flashy::success('articles ajoute avec success.');

    return redirect()->route('lifestyle-liste');

    }

    code model: article

    class Article extends Model

    {
    //

    // use \Conner\Tagging\Taggable;

    protected $fillable = ['logo','titre', 'categorie','contenu',];

    public function tags() {

    return $this->belongsToMany(Tag::class);

    }

    public function saveTags(string $tags) {

    $tags = array_filter(array_unique(array_map(function ($item){

    return trim($item);

    } ,explode(',', $tags))), function ($item){

    return !empty($item);

    });

    $persited_tags = Tag::whereIn('name',$tags)->get();

    $tags_to_create = array_diff($tags, $persited_tags->pluck('name')->all());

    $tags_to_create = array_map(function ($tag) {

    return ['name' => $tag, 'slug'=> Str::slug($tag)];

    }, $tags);

    $created_tags = $this->tags()->createMany($tags_to_create);

    $created_tags = $persited_tags->merge($created_tags);

    $this->tags()->sync($persited_tags);

    }
    }

    code tags
    class Tag extends Model
    {
    //

    public $guarded = [];

    public $timestamp = false;

    public function articles() {

    return $this->belongsToMany(Article::class);

    }
    }

    merci de me venir en aide bien a vous

  • Avatar de Farris27
    Membre depuis :
    31/10/2017
    Messages :
    65

    Met ça derrière le save et pas avant

    $articles->saveTags($request->get('tags'));

    ;)

Vous ne pouvez pas répondre à ce sujet.