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> modèle de pays em> p> 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);
}
3 Réponses :
sqlstate [HY000]: erreur générale: 1364 champ 'cession_id' n'a pas de Valeur par défaut p>
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. P>
Essayez ceci, J'ai assigné de valeur au pays_id et de catégorie_id avant d'enregistrer l'article p>
xxx pré> blockQquote>
Qu'est-ce que vous avez changé d'explication?
sqlstate [HY000]: erreur générale: 1364 champ 'pays_id' n'a pas de valeur par défaut p>
Dans cette erreur, vous pouvez facilement voir
pays_id n'a pas de défaut code> p>
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 Code> Recherche de valeur par défaut p>
Vous devez coder votre p>
xxx pré> blockQuote>
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();
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