首页 > 解决方案 > 使用图片角度和 laravel 添加数据

问题描述

我有角度的函数 insertData :

insertData(){
    this.service.insertAnnonce(this.annonce).subscribe(res=>{
        console.log(res);
    })

它运作良好

这是我的模型:

export interface IPost {
    id              :number;
    user_id         :string ;
    picture         :string;
    title           :string;     
    description     :string;      
    price           :number;
    category_id     :number ;
    Modele          :string;  
    BoiteDeVitesse  :string;     
    AnneeModele     :number;      
    Marque          :string;
    YearOfRegistration:number ;
    TypePost        :string;   
    PuissanceFiscale:string;   
    PuissanceDIN    :string;   
    Kilometrage     :number;
    NombreDePortes  :number;
    NombreDePlaces  :number;
    carburant       :string;   
    Permis          :boolean;
    data: IPost[];
}

这是图片的 myFunction :

onSubmitform(f: NgForm) {
    var myFormData = new FormData();
    const headers = new HttpHeaders();
    headers.append('Content-Type', 'multipart/form-data');
    headers.append('Accept', 'application/json');
    myFormData.append('image', this.filedata);
    /* Image Post Request */
    this.service.insertAnnonce(this.annonce).subscribe(res=>{
        console.log(res);
    })
    this.http.post('http://127.0.0.1:8000/api/AddImage/', myFormData, {
        headers: headers
    }).subscribe(data => {

    });  
}

它也很好用

这是控制器背面:

  public function add(Request $request){
    $p=new PostVehicule();
    $p->title=        $request->title;
    $p->description=  $request->description;
    $p->price=        $request->price;
    $p->TypePost=     $request->TypePost;
    $p->category=      $request->category;
    $p->Modele=        $request->Modele;
    $p->Marque=        $request->Marque;
    $p->BoiteDeVitesse=$request->BoiteDeVitesse;
    $p->AnneeModele=$request->AnneeModele;
    $p->PuissanceFiscale=$request->PuissanceFiscale;
    $p->Kilometrage=$request->Kilometrage;
    $p->NombreDePortes=$request->NombreDePortes;
    $p->NombreDePlaces=$request->NombreDePlaces;
    $p->carburant=$request->carburant;

 /*   if ($request->hasFile('image')) {
        $image_file = $request->file('image');
        $img_extension = $image_file->getClientOriginalExtension();
        $img_filename = time() . '.' . $img_extension;
        $path ='C:/ionic/data/';
        $image_file->move($path, $img_filename);
        $p->image = $img_filename;
    }*/
    
    if($p->save()){
        //return new PostResource($post); 
        return response()->json(['message'=>'post added successfult']);
 }
}
public function uploadimage(Request $request) {
    $p=new PostVehicule();
    if ($request->hasFile('image')) {
        $image_file = $request->file('image');
        $img_extension = $image_file->getClientOriginalExtension();
        $img_filename = time() . '.' . $img_extension;
        $path ='C:/ionic/data/';
        $image_file->move($path, $img_filename);
        $p->image = $img_filename;
    }
    if($p->save()){
        //return new PostResource($post); 
        return response()->json(['message'=>'Image added successfult']);
 }

}

所以我的问题是当我像这张图片一样单独插入数据时。

在此处输入图像描述

如何合并这两个函数以在数据库中只有一个结果?

标签: angularlaravelapi

解决方案


我不知道你为什么要为此使用 2 个单独的函数,但问题是你在这两个函数 ( $p=new PostVehicule();) 中都创建了新对象。如果您坚持编写 2 个函数,则应将最初创建的同一对象传递给第二个对象。$p = $this->add($request);您在评论中提到的不返回 PostVehicule 对象,它返回一个 http 响应。你应该改变它:

if($p->save()){
        return $p;
 }

推荐阅读