1

i tried to insert an annn but it gives me error Array to string conversion.knowing that all the fields are not obligatory plien, because the insertion is done according to the subcategory_id chosen in blade edit

AnnoncesController.php

public function store(Request $request)
    {
       
       $request->validate([  
        'category_id'=>['bail','required',],
        'souscategory_id'=>['bail','required',],
        'entreprise'     =>['bail','exclude_unless:souscategory_id,1','required','string','min:2','max:255'],
        'domaine'     =>['bail','exclude_unless:souscategory_id,1','required','string'],
        'contrat'     =>['bail','exclude_unless:souscategory_id,1','required','string',],
        'niveaua'     =>['bail','exclude_unless:souscategory_id,1','required','string'],
        'poste'     =>['bail','exclude_unless:souscategory_id,2','required','string'],
        'marquem'   =>['bail','exclude_unless:souscategory_id,7','required','string'],
        'marque'    =>['bail','exclude_unless:souscategory_id,8','required','string'],
        'modele'    =>['bail','exclude_unless:souscategory_id,8','required','string'],
        'annee'     =>['bail','exclude_unless:souscategory_id,8','required','string'],
        'km'        =>['bail','exclude_unless:souscategory_id,8','required','numeric'],
        'carburant'           =>['bail','exclude_unless:souscategory_id,8','required','string','min:2','max:255'],
        'puissance'           =>['bail','exclude_unless:souscategory_id,8','required','string','min:2','max:255'],
        'titre'          =>['bail','exclude_unless:souscategory_id,1','required','string','min:2','max:255'],
        'description'    =>['bail','exclude_unless:souscategory_id,1','required','string','min:30','max:255'],
        'prix'    =>['bail','exclude_unless:souscategory_id,6','required','min:1','max:12'],
        'image'          =>['bail','exclude_unless:souscategory_id,1','required','mimes:jpeg,jpg,png,gif,svg','max:2048'],
        'images.*'       =>['bail','exclude_unless:souscategory_id,1','required','mimes:jpeg,jpg,png,gif,svg','max:2048'], 
        //2 emploi/
        
     ]); 
       if($request->hasFile('image'))
       {
        $path = $request->image->store('annonces');
        $request->image = $path;
        }
        $request->user_id = Auth::user()->id;
        $Annonce = new Annonce($request->all());
        $Annonce->save();
        return Redirect::to("annonces")
        ->withSuccess('Great! file has been successfully uploaded.');
    }
2
  • Do you already define all your fields into your model? Commented Nov 11, 2020 at 15:50
  • @SokChanty thx for u answer, yes i do protected $fillable = [ 'category_id','souscategory_id','domaine','contrat','entreprise','niveaua','poste','salaire','marque','marqueem','modele','annee','km','carburant','poidsl','piece','autrepi','surface','chambre','salleb','faces','titre','description','image','images' ]; Commented Nov 11, 2020 at 15:53

3 Answers 3

1

to create a new element from $request in Laravel you need to do it as below and assign each value of $request to the each attribute of Announce object:

$request->user_id = Auth::user()->id;

$Annonce = new Annonce();
$Annonce->user_id = $request->user_id;
$Annonce->some_column = $request->some_column;
$Account->save();
Sign up to request clarification or add additional context in comments.

Comments

1

You can try by this:

use App\Models\Announce;
............................

$data = $request->all();

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

   $path = $request->image->store('annonces');
   $data['image'] = $path;
}

$data['user_id'] = Auth::user()->id;

Announce::create($data);

return Redirect::to("annonces")
        ->withSuccess('Great! file has been successfully uploaded.');

Make sure you imported the correct model namespace on your app.

Comments

0

although is not recommended to modify a request, you should do it in this way:

$request->request->add(['image' => $path, 'user_id' => Auth::user()->id]);

or by

$request = array_merge($request->all(), ['image' => $path, 'user_id' => Auth::user()->id]));

2 Comments

thx for u answer ,please write the complete syntax because I write like that but it doesn't work it gives me the same error `` if($request->hasFile(image)) { $path = $request->image->store(annonces); $request->image = $path; } $request->user_id = Auth::user()->id; $request = array_merge($request->all(), [image => $path]); $Annonce = new Annonce($request); $Annonce->save();``
I've edited my answer to add 'user_id' variable. Sorry for not see it before.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.