2016-09-23 166 views
-1

這爲我創建了一個新項目。但是,我想要做的是在數據庫中添加屬於另一個名爲projects_air的數據庫表的附加字段,並在該項目上添加這些空氣詳細信息。將數據插入數據庫 - LARAVEL

public function newProject(Request $request) 
    { 
     $data = $request->all(); 

     $attributes = []; 
     $attributes['title'] = $data['title']; 
     $attributes['start_date'] = date("Y-m-d h:i:s", strtotime($data['start_date'])); 
     $attributes['end_date'] = date("Y-m-d h:i:s", strtotime($data['end_date'])); 
     $attributes['created_by'] = Auth::user()->id; 
     $attributes['description'] = $data['description']; 
     $attributes['air'] = '10'; 
     $attributes['water'] = '19'; 
     $attributes['lat'] = $data['lat']; 
     $attributes['lng'] = $data['lng']; 



//  var_dump($attributes); 
//  return; 

     $project = Projects::create($attributes); 
     $air = Projects_air::create($airattributes); 

     if($project) 
      return redirect('home')->with('success', 'Project added successfully'); 

     var_dump($data); 
     return; 
    } 

額外的數據接入到數據庫:

 $airattributes['dust'] = $data['dust']; 
    $airattributes['noise'] = $data['noise']; 
    $airattributes['temperature'] = $data['temperature']; 
    $airattributes['radiation'] = $data['radiation']; 

我想,這些數據也屬於一個項目,他們都(項目表和projects_air表)都稱爲「PROJECT_ID」

我曾嘗試使用此$air = $project->air()->create($airattributes);但IM發現錯誤,列項目_ID不存在,這是真實的。它應BE PROJECT_ID但我不知道哪裏出錯

在這裏你可以看到接口:http://188.166.166.143/projects/add

UPDATE: 空調型號:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Air extends Model 
{ 
    protected $table = 'projects_air'; 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'project_id', 'temperature', 'radiation', 'dust', 'noise' 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'id', 
    ]; 
} 

項目控制器

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Projects; 
use App\Enroll; 
use View; 
use Auth; 
use App\Air; 

class ProjectsController extends Controller 
{ 
    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct(Projects $projects) 
    { 
     $this->middleware('auth'); 
     $this->projects = $projects; 
    } 

    // Add new project 
    public function addProject() 
    { 
     return View::make('projects/add_project'); 
    } 


    // Process new project 
    public function newProject(Request $request) 
    { 
     $data = $request->all(); 

     $attributes = []; 
     $attributes['title'] = $data['title']; 
     $attributes['start_date'] = date("Y-m-d h:i:s", strtotime($data['start_date'])); 
     $attributes['end_date'] = date("Y-m-d h:i:s", strtotime($data['end_date'])); 
     $attributes['created_by'] = Auth::user()->id; 
     $attributes['description'] = $data['description']; 
     $attributes['air'] = '10'; 
     $attributes['water'] = '19'; 
     $attributes['lat'] = $data['lat']; 
     $attributes['lng'] = $data['lng']; 
     $airattributes['dust'] = $data['dust']; 
     $airattributes['noise'] = $data['noise']; 
     $airattributes['temperature'] = $data['temperature']; 
     $airattributes['radiation'] = $data['radiation']; 
     $airattributes['project_id'] = $data['project_id']; 


//  var_dump($attributes); 
//  return; 

     $project = Projects::create($attributes); 
     $air = $project->air()->create($airattributes); 

     var_dump($air); 
     return; 


     if($project) 
      return redirect('home')->with('success', 'Project added successfully'); 

     var_dump($data); 
     return; 
    } 

    // Show all projects 
    public function showProjects() 
    { 

     $data = Projects::get(); 
     return View::make('projects/list_projects')->with('projects', $data); 

    } 

    // Show single project 
    public function showSingleProject($id) 
    { 
     if(is_null($id)) 
      return back()->with('error', 'Invalid project'); 


     $project = Projects::where('id', $id)->first(); 

     if(is_null($project)) 
      return back()->with('error', 'Project not found'); 


     return View::make('projects/single_project2')->with('project', $project); 

    } 

    // Show single project 
    public function showEditProject($id) 
    { 
     if(is_null($id)) 
      return back()->with('error', 'Invalid project'); 


     $project = Projects::where('id', $id)->first(); 

     if(is_null($project)) 
      return back()->with('error', 'Project not found'); 


     $hasAccess = 0; 


     if(!empty($project->enrolls)) 
     { 
      foreach($project->enrolls as $enroll) 
      { 

       if($enroll->user_id == Auth::user()->id) 
       { 
        $hasAccess = 1; 
        break; 
       } 


      } 
     } 


     if($project->created_by == Auth::user()->id) 
      $hasAccess = 1; 



     if($hasAccess != 1) 
      return back()->with('error', 'You are not allowed to edit this project'); 


     return View::make('projects/edit_project')->with('project', $project); 

    } 




    // Show single project 
    public function showDeleteProject($id) 
    { 
     if(is_null($id)) 
      return back()->with('error', 'Invalid project'); 


     $project = Projects::where('id', $id)->first(); 

     if(is_null($project)) 
      return back()->with('error', 'Project not found'); 


     if($project->created_by != Auth::user()->id) 
      return back()->with('error', 'You are not the owner of this project'); 


     return View::make('projects/delete_project')->with('project', $project); 

    } 


    public function processDeleteProject(Request $request) 
    { 
     $data = $request->all(); 

     if(!is_null($data['pk'])) 
      Projects::where('id', $data['pk'])->delete(); 


     return redirect('home')->with('success', 'Project deleted successfully'); 

    } 

    public function enrollToProject($id) 
    { 
     if(is_null($id)) 
      return back()->with('error', 'Invalid project'); 

     $userId = Auth::user()->id; 
     $attributes = []; 
     $attributes['user_id'] = $userId; 
     $attributes['project_id'] = $id; 

     $enrolled = Enroll::create($attributes); 

     if($enrolled) 
      return back()->with('success', 'You have successfully enrolled to this project'); 

    } 


    public function showImportView() 
    { 

     return View::make('projects/import_project'); 
    } 



    public function processImport(Request $request) 
    { 

     $data = $request->all(); 

     if($data['file']) 
     { 
      $csvData = file_get_contents($data['file']); 
      $lines = explode(PHP_EOL, $csvData); 
      $csv = array_map('str_getcsv', $lines); 
      $csv = array_shift($csv); 

      if(is_null($csv)) 
       return back()->with('error', 'Its Empty'); 



      $attributes = []; 
      $attributes['title'] = $csv[0]; 
      $attributes['start_date'] = date("Y-m-d h:i:s", strtotime($csv[1])); 
      $attributes['end_date'] = date("Y-m-d h:i:s", strtotime($csv[2])); 
      $attributes['created_by'] = Auth::user()->id; 
      $attributes['description'] = $csv[3]; 
      $attributes['air'] = $csv[4]; 
      $attributes['water'] = $csv[5]; 


      $project = Projects::create($attributes); 

      if($project) 
       return redirect('home')->with('success', 'Project imported successfully'); 

//   var_dump($attributes); 
//   echo '<pre />'; 
//   return; 
     } 


    } 


} 
+0

所以你幹嗎創建上面代碼中的數組?您應該創建'airattributes'並確保您在projects_air模型中具有正確的'fillable'屬性 –

+0

您可以添加模型代碼嗎?恐怕我沒有完全按照問題所在。 – ollieread

+0

問題更新 – dailyadd

回答

0

定義您的模型中的關係:

class Projects extends Model { 
    public function air() { 
     return $this->hasMany('App\Projects_air'); 
    } 
} 

然後在你的控制器:

$project = Projects::create($attributes); 
$air = $project->air()->create($airattributes); 
+0

我應該在哪裏定義$ air? – dailyadd

+0

你不需要定義它,你會爲它分配新創建的空氣項目 – Sherif

+0

它們都有不同的表格:air有不同的表格和項目有不同的表格。 – dailyadd