【问题标题】:Get ID of a row having an other value on form Laravel获取表单 Laravel 上具有其他值的行的 ID
【发布时间】:2017-08-04 11:43:28
【问题描述】:

如何获取具有 name 值的 id 值?

我有这个表格:

<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>

如何获取具有 name 值的客户端的 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();
}

非常感谢,如果对代码有任何疑问,可以提问。

【问题讨论】:

  • 你能详细说明你的问题吗?
  • 当然;)当你在表单上传递名称值时,如何获取客户端的id;)
  • 试试这个$client_project-&gt;client_id = DB::table('clients')-&gt;where('name', $request('client'))-&gt;first()-&gt;id; :) `
  • 知道为什么当我提交到:web.loc/admin/… ?我认为可能有些 id 是错误的
  • 因为你没有在表单和方法中添加提交后点击的路由。

标签: php mysql sql laravel


【解决方案1】:

奇怪的问。如果我正确理解您的问题,您想获取所选客户的 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-&gt;project = new Client_Project(); 中的非对象上添加属性。您必须使用stdClass$client_project 定义为一个对象(它是一个默认类,没有属性,没有方法。有点像一个空的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
}

【讨论】:

  • 嗨,这是一个好主意,而且更简单。无论如何,给我一个错误:Creating default object from empty value
  • 如果已定义 Client 模型,则我的答案中的 $clientObj 部分有效。在您的情况下,我认为您可以将$clientID 用作您的$client_project-&gt;client_id
  • 在你的控制器类定义之前你有没有用Use App\Client;“调用”你的模型?
  • 是的@iArcadia,其声明为use App\Models\Client;
  • 我有一个语法错误,让我重新编写代码,如果有效我会发布:D
【解决方案2】:

我想你可以试试这个:

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();
        }

希望这对你有用!!!

【讨论】:

    【解决方案3】:

    如果您想要选定的客户,您必须在值中传递客户的 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
    

    【讨论】:

    • 我像你说的那样尝试,然后在控制器中这样做?:$client_project-&gt;client_id = $request-&gt;input("client"); 给我一个错误:Creating default object from empty value。我喜欢将值传递给客户端 ID 的想法,这是在控制器上获取值的简单方法。知道如何修复错误吗?
    • 你会试试$client_project-&gt;client_id = $request-&gt;client;
    【解决方案4】:

    如果您只有 id 与 name 关联,请尝试以下操作:

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

    如果有很多 id 与给定名称相关联,那么您可以使用这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 2022-01-25
      • 2018-09-01
      • 2015-07-29
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      相关资源
      最近更新 更多