2017-08-03 14 views
0

このエラーが発生しました。一般的なエラー:1366整数値が正しくありませんLaravel

私は少し見解を説明します。

私は新しいプロジェクトを作成するフォームを作成しました。フォームを非表示にして保存してから、別のフォームをレンダリングして作成します。作成して保存します。クライアントを作成するための他のフォーム、私は作成し、それを保存します。

同じ瞬間に、別のテーブルに別の値を保存したいと思います。

データベースに保存されている最後のclient_idとproject_idの値をclient_projectsに保存します。

だから私はこの試してみてください。

$client_project = new Client_Project(); 
      $client_project->client_id = DB::table('clients')->where('id', DB::raw("(select max(id) from clients)"))->get(); 
      $client_project->project_id = DB::table('projects')->where('id', DB::raw("(select max(id) from projects)"))->get(); 
      $client_project->save(); 

をしかし、それは私のタイトルのエラーを与える::

SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '[{"id":49,"name":"hola","slug":"hola","priority":1,"created_at":"2017-08-03 13:53:35","updated_at":"2017-08-03 13:53:35"}]' for column 'client_id' at row 1 (SQL: insert into `client_project` (`client_id`, `project_id`, `updated_at`, `created_at`) values ([{"id":49,"name":"hola","slug":"hola","priority":1,"created_at":"2017-08-03 13:53:35","updated_at":"2017-08-03 13:53:35"}], [{"id":40,"slug":"1","order":40,"public":1,"pathheader":"\/tmp\/phpf8NUkb","pathhome":"\/tmp\/php9zepk7","created_at":"2017-08-03 13:49:53","updated_at":"2017-08-03 13:49:53"}], 2017-08-03 13:53:35, 2017-08-03 13:53:35)) 

私はクライアントを作成し、私はclient_projectsを作成しようとするフル機能がありますthis

public function storeProjectsClients(Request $request){ 
      $client = new Client(); 
      $client->name = $request->input("nameClient"); 
      $client->slug = $request->input("slugClient"); 
      $client->priority = $request->input("priorityClient"); 
      $client->save(); 
      $client_project = new Client_Project(); 
      $client_project->client_id = DB::table('clients')->where('id', DB::raw("(select max(id) from clients)"))->get(); 
      $client_project->project_id = DB::table('projects')->where('id', DB::raw("(select max(id) from projects)"))->get(); 
      $client_project->save(); 
     } 

私は、project_idとclient_idの値をjsonで渡す方が良いことがわかりますが、何人かのユーザーがこれを同時にやっているのであれば、それは問題を起こすでしょうが、とにかく、これは私のためだけです。

何か助けていただければ幸いです。

+0

ちょうどINSERTクエリを見て:

は、次のコードを試すことができます。 「 [{"id":49、 "名前": "ホラ"、 "スラッグ": "ホラ"、 "優先度":1、 "created_at": "2017-08-03 13:53 :35 "、" updated_at ":" 2017-08-03 13:53:35 "}]"を整数が必要な列に追加します。 –

+0

私はそれを何度もチェックします。idは整数、nameは文字列、slugは文字列、priorityは整数です。どこでエラーが見つかりましたか? –

+0

文字列 "[{{" id ":49、" name ":" hola "、" slug ":" hola .... "は整数を必要とするデータベース列に書かれています..... –

答えて

1

get()メソッドでは、テーブル内のクエリに対応する行を選択していますが、外部キーはidである必要があります。

したがって、1行だけを取る必要があります(first()を使用すると、1行しか持たないと考えると)、IDだけを選択してください。

$client_project = new Client_Project(); 
$client_project->client_id = DB::table('clients')->where('id', DB::raw("(select max(id) from clients)"))->first()->id; 
$client_project->project_id = DB::table('projects')->where('id', DB::raw("(select max(id) from projects)"))->first()->id; 
$client_project->save(); 
+0

Thisこのコレクションインスタンスにプロパティ[id]が存在しません なぜ分かったのですか? –

+0

'get()'でやったことがありますか?それを変更する – Tugdual

+0

最初の作品で、私はあなたに+100を与えることができれば私の日を作った。 –