0
votes

Comment se connecter aux tables à une table de Laravel

Il est si long que j'ai eu affaire à cela mais aucun résultat n'a encore atteint. J'ai donc décidé de demander votre aide. J'ai 3 tables => Article, catégorie et pays Strong> et je souhaite connecter ces tables. Chaque catégorie peut avoir plusieurs articles, mais chaque article est lié à une seule catégorie. Chaque pays peut avoir plusieurs articles, mais chaque article est lié à un seul pays. Le problème est avec la partie ArtiClecontroller qui fonctionne pour connecter une seule table à l'article mais pour la connexion des deux tables à celle-ci, je reçois cette erreur: sqlstate [HY000]: erreur générale: 1364 champ "pays_id" n'a pas de valeur par défaut forte> et aussi j'ai pays_id em> et catégorie_id em> comme mes clés étrangères dans la table des articles. Vous trouverez ci-dessous mes tables:

modèle d'article: em> p> xxx pré>

modèle de pays em> p> xxx PRE>

Catégorie Modèle EM> P>

public function store(Request $request)
{
    $article = new article(
        [
            'title' => $request->input('title'),
            'top_content' => $request->input('top_content'),
            'quote' => $request->input('quote'),
            'left_content' => $request->input('left_content'),
            'right_content' => $request->input('right_content'),
        ]
    );
    if ($request->hasFile('article_slider_image')) {
        $file = time() . '_' . $request->file('article_slider_image')->getClientOriginalName();
        $destination = base_path() . '/public/images/articleSliderImages';
        $request->file('article_slider_image')->move($destination, $file);
        $article->article_slider_image = $file;
    }
    if ($request->hasFile('left_image')) {
        $file = time() . '_' . $request->file('left_image')->getClientOriginalName();
        $destination = base_path() . '/public/images/articleLeftImages';
        $request->file('left_image')->move($destination, $file);
        $article->left_image = $file;
    }
    if ($request->hasFile('right_image')) {
        $file = time() . '_' . $request->file('right_image')->getClientOriginalName();
        $destination = base_path() . '/public/images/articleRightImages';
        $request->file('right_image')->move($destination, $file);
        $article->right_image = $file;
    }
    $country = country::where('name',$request->input('country'))->first();
    $category = category::where('name',$request->input('category'))->first();

  //$article->category_id = 1; //not commenting this part works fine
    $country->articles()->save($article);
    $category->articles()->save($article);// but when I use this one, it gives me error
  //dd($category->id);

    $article->save();
    return redirect()->route('article.index')->with('success', 'article created successfully' . $request->title);

}


2 commentaires

Selon la convention de nommage Laravel - un modèle devrait être singulier, aucun espacement entre les mots et capitalisé I.e pays, catégorie, article


C'est vrai mais je n'ai pas fait attention aux noms que je voulais demander quelque chose d'autre merci de toute façon


3 Réponses :


1
votes

sqlstate [HY000]: erreur générale: 1364 champ 'cession_id' n'a pas de Valeur par défaut

Le moyen d'erreur ci-dessus signifie que vous insérez des données à la base de données, vous n'abumez pas la valeur de Country_ID et de recherche de la base de données Valeur par défaut et vous n'avez pas affecté la valeur par défaut pour Country_ID dans la table DB.

Essayez ceci, J'ai assigné de valeur au pays_id et de catégorie_id avant d'enregistrer l'article xxx


1 commentaires

Qu'est-ce que vous avez changé d'explication?



0
votes

sqlstate [HY000]: erreur générale: 1364 champ 'pays_id' n'a pas de valeur par défaut

Dans cette erreur, vous pouvez facilement voir pays_id n'a pas de défaut

Cela signifie que vous insérez des données sur la base de données, il ne transmet aucune donnée et Base de données Recherche de valeur par défaut

Vous devez coder votre xxx


0 commentaires

1
votes

Vous n'avez pas besoin de charger le modèle entier pour enregistrer un article, vous avez juste besoin d'un identifiant, donc:

$article->save();


0 commentaires