2017-08-04 62 views
1

如何獲取具有名稱值的id值?獲取表單上具有其他值的行的ID Laravel

我有這樣的形式:

<form enctype="multipart/form-data" id="projectclientexist" name="projectclientexist"> 
    @foreach ($clients as $key => $client) 
    <div class="radio"> 
     <div class="col-md-3"> 
      <label><input type="radio" name="client" value="{{$client->name}}">{{$client->name}}</label> 
     </div> 
    </div> 
    @endforeach 
    <input type="submit" value="Crear relacion Proyecto-Cliente" id="relationclientexist" name="relationclientexist" class="btn btn-success"> 
</form> 

我該怎麼辦呢取值,其命名爲價值客戶的ID?

public function storeProjectsClientsIfExist (Request $request) 
{ 
    $client_project->project = new Client_Project(); 

    $client_project->client_id = DB::table('clients') 
           ->where('id', DB::raw("(select max(id) ")); 

    $client_project->project_id = DB::table('projects') 
           ->where('id', DB::raw("(select max(`id`) from projects)")) 
           ->first() 
           ->id; 
    $client_project->save(); 
} 

非常感謝,如果有關於代碼的任何問題,你可以問它。

+0

你能詳細闡述您的問題嗎? –

+0

當然;)如何獲得客戶端的ID,當你在表單上傳遞名稱值; –

+0

試試這個'$ client_project-> client_id = DB :: table('clients') - > where('name' ,$ request('client')) - > first() - > id;':) ' – Maraboc

回答

1

我想你可以試試這個:

public function storeProjectsClientsIfExist(Request $request) 
     { 
      $client_project->project = new Client_Project(); 
      $client_project->client_id = DB::table('clients')->where('name', $request->client)->first()->id; 
      $client_project->project_id = DB::table('projects')->where('id', DB::raw("(select max(`id`) from projects)"))->first()->id; 
      $client_project->save(); 
     } 

希望爲你工作!!!

2

古怪的問道。如果我正確理解你的questino,你想獲得所選客戶的ID?

如果是這樣的話,看來,場value屬性具有存儲ID:

<label><input type="radio" name="client" value="{{$client->id}}">{{$client->name}}</label> 

然後,控制器,你選中的客戶是這樣的:

$clientID = $request->input('client'); // or $request->client; 
$clientObj = Client::find($clientID); // Your client model object, if needed. Equals to: DB::table('clients')->find($clientID); 

編輯:我認爲你的Creating default object from empty value錯誤發生是因爲你嘗試在$client_project->project = new Client_Project();的非對象上添加一個屬性。您必須將$client_project定義爲stdClass的對象(它是一個默認類,沒有屬性,沒有方法,有點像空的javascript對象)。

所以我們在這裏:

public function storeProjectsClientsIfExist (Request $request) 
{ 
    $clientID = $request->input('name'); // get the name field value. 

    $client_project = new \stdClass(); // define the var as an object. 

    $client_project->project = new Client_Project(); 
    $client_project->client_id = $clientID; 
    // currently the next line get the last project added in DB 
    $client_project->project_id = DB::table('projects') 
     ->where('id', DB::raw("(select max(`id`) from projects)")) 
     ->first() 
     ->id; 

    // I think "$client_project->save();" will not work 
    $client_project->project->save(); 

    return view('my.view'); // or redirect()->route('my.route') or what you want 
} 
+0

嗨,這是一個好主意。無論如何,給我一個錯誤:'從空值創建默認對象' –

+0

如果已經定義了'Client'模型,則我的答案中的$ clientObj部分有效。在你的情況下,我認爲你可以使用'$ clientID'作爲'$ client_project-> client_id'。 – iArcadia

+0

我有一個模型定義,不工作。:l –

1

如果你想選擇的客戶端的,你必須通過客戶端的ID的價值,而不是名稱

@foreach ($clients as $key => $client) 
      <div class="radio"> 
        <div class="col-md-3"> 
        <label><input type="radio" name="client" value="{{$client->id}}">{{$client->name}}</label> 
        </div> 
      </div> 
     @endforeach 
+0

我嘗試像你說的,然後在控制器做到這一點?:'$ client_project-> client_id = $ request-> input(「client」);'給我一個錯誤:'從空值創建默認對象。我喜歡將價值傳遞給客戶端的想法,這是一種簡單的方法來獲取控制器的價值。知道如何解決這個錯誤? –

+0

你會嘗試'$ client_project-> client_id = $ request-> client;'而不是 –

+0

同樣的錯誤伴侶。 –

0

如果您有相關的名稱僅ID那就試試這個:

$client_id = DB::table('clients')->where('name',$request->client))->first()->id; 

如果許多ID與給定名稱相關聯,那麼你可以使用這個:

$client_ids = DB::table('clients')->where('name',$request->client))->pluck('id'); 
相關問題