2016-02-19 63 views
2

我試圖做一個基本的簡單CRUD使用laravel框架,我設法做出一個簡單的CRUD沒有選擇形式,但是當我使用select形式,它越來越錯誤消息Laravel SQLSTATE [23000]:完整性約束違規:1452無法添加或更新子行

完整的錯誤

SQLSTATE [23000]:完整性約束違規:1452不能添加或更新子行:外鍵約束失敗(activity_report_2015-04-22tn_project, CONSTRAINT fk_client_id FOREIGN KEY(cv_client_id)參考文獻tn_clientcn_id))(SQL:插入tn_projectcv_created_by,​​,cv_idcv_namecv_client_idcn_invoice_methodcn_project_ratecn_note)值(ADA,2016年2月18日二十三時52分45秒,TestProject,測試名,$客戶端 - > cn_id,$ invoice-> cn_id,1.2,JustTest))

cv_client_idcv_invoice_method的來自不同的表,該表是tn_clienttn_invoice_method的價值,我注意到爲什麼值得cv_client_idcv_invoice_method結果查詢比值比任何想法?

如果能跟大家需要更多的信息,只是讓我知道

查看

<div class="form-group"> 
    <label class="col-md-3 control-label">Client</label> 
    <div class="col-md-9"> 
     <select name="clientId" id="clientId" class="form-control" placeholder="Select Client"> 
      @foreach ($clients as $client) 
       <option value='$client->cn_id'>{{$client->cv_name}}</option>; 
      @endforeach  
     </select> 
    </div> 
</div> 
<div class="form-group"> 
    <label class="col-md-3 control-label">Invoice Method</label> 
    <div class="col-md-9"> 
     <select type="hidden" name="invoiceId" id="invoiceId" class="form-control"> 
      @foreach ($invoices as $invoice) 
       <option value='$invoice->cn_id'>{{$invoice->cv_method}}</option>; 
      @endforeach 
     </select> 
    </div> 
</div> 

控制器

public function createOrEdit(){ 
    $currentUsername = Auth::user()->name; 

    $isUpdate = false; 
    $projectId = Input::get('prevId'); 

    //populate data 
    $project = new Project; 
    if($projectId != ""){ 
     $project = Project::where('cv_id','=',$projectId)->firstOrFail(); 
     $project->cv_updated_by = $currentUsername; 
     $project->cn_updated_at = Carbon::now(); 
     $isUpdate = true; 
    } else{ 
     $project->cv_created_by = $currentUsername; 
     $project->cn_created_at = Carbon::now(); 
    } 

    $project->cv_id = Input::get('projectId'); 
    $project->cv_name = Input::get('projectName'); 
    $project->cv_client_id = Input::get('clientId'); 
    $project->cn_invoice_method = Input::get('invoiceId'); 
    $project->cn_project_rate = Input::get('projectRate'); 
    $project->cn_note = Input::get('note'); 

    //execute 
    if($isUpdate){ 
     Log::info("entering update mode"); 
     Project::where('cv_id','=',$projectId)->update(['cv_id'=>$project->cv_id, 
        'cv_name'=>$project->cv_name, 
        'cv_client_id'=>$project->cv_client_id, 
        'cn_invoice_method'=>$project->cn_invoice_method, 
        'cn_project_rate'=>$project->cn_project_rate, 
        'cn_note'=>$project->cn_note, 
        'cn_updated_at'=>$project->cn_updated_at, 
        'cv_updated_by'=>$project->cv_updated_by]); 
    }else{ 
     $project->save(); 
    } 

    return Response::json(
      array(
        'content' => Project::with('client','invoice')->get(), 
        'status' => 'success', 
       ) 
     ); 
} 

注意:如果在我的控制,我把cv_client_idcv_invoice_method手動的價值,它的做工精細

回答

1

你忘了回聲$客戶 - > cn_id <option value='{{$client->cn_id}}'>{{$client->cv_name}}</option>;

同樣在這裏: <option value='{{$invoice->cn_id}}'>{{$invoice->cv_method}}</option>;

+0

OMG,這是工作,我想我需要閱讀更多關於刀片文檔哈哈,謝謝的人 –

+0

歡迎您。試想一下:刀片解析你的* .blade.php文件並查找以@開頭的指令,並用實際的php對象和代碼替換它們。 {{$ test}} = <?php echo $ test;?> – CrackingTheCode

+0

是的,當我看到您的答案時,我只是想通了,再次感謝哈哈 –

相關問題