2016-09-23 2 views
-1

Это создает для меня новый проект. Однако я хочу добавить дополнительные поля в базе данных, которые относятся к другой таблице базы данных, называемой project_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); BUT IM ПОЛУЧИТЬ ОШИБКУ, КОТОРЫЕ ПРОЕКТЫ_ ПРОФИЛАКТИКИ НЕ СУЩЕСТВУЮТ, ЧТО ИСТИННО. СЛЕДУЕТ PROJECT_ID но я не знаю, где ошибка IS

здесь вы можете посмотреть интерфейс: http://188.166.166.143/projects/add

UPDATE: Air Модель:

<?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', 
    ]; 
} 

ПРОЕКТЫ CONTROLLER

<?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' и убедиться, что у вас есть правильный атрибут' fillable' в модели project_air –

+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

у них обоих есть разные таблицы: у воздуха есть разная таблица, а проект имеет разную таблицу. – dailyadd

Смежные вопросы