2017-01-30 4 views
0

これは前に何度もやったので、これは簡単な修正でなければなりません。しかし、それが立てば私は完全に困惑しています。次のコードを使用して、親オブジェクトUnknown_Tagとその多くの子を保存します。Laravelは子レコードを保存しますが、外部キーをnullに設定します

方法:

public function saveUnknown(Request $request) 
{ 
    $url = $request->url; 
    $tag = new Unknown_Tag(); 
    $tag->url = $url; 
    $protocol = 
     substr($url, 0, strpos($url, ':')); 
    $tag->protocol = $protocol; 
    $domain = 
     parse_url($url, PHP_URL_HOST); 
    $tag->domain = $domain; 
    $tag->save(); 

    //get the path 
    $Path = parse_url($url, PHP_URL_PATH); 
    if ($Path) { 
     $splitPath = substr($Path, 1); 
     $paths = explode('/', $splitPath); 
     foreach ($paths as $p) { 
      $path = new Path(); 
      $path->path = $p; 
      $tag->Paths()->save($path); 
     } 
    } 
    //get Queries 
    $splitQuery = parse_url($url, PHP_URL_QUERY); 
    if ($splitQuery) { 
     $queries = explode('&', $splitQuery); 
     foreach ($queries as $q) { 
      $query = new Query(); 
      $q = substr($q, 0, strpos($q, '=')); 
      IF (SUBSTR($q, -1) != ' ') { 
       $q .= ' '; 
      } 
      $query->var = $q; 
      $value = $q = preg_replace('/^[^=]*:/', '', $q); 
      $query->value = $value; 
      $tag->Queries()->save($query); 
     } 
    } 
} 

親オブジェクトが

class Unknown_Tag extends Model 
{ 
    protected $table = 'unknown_tags'; 
    public $timestamps = false; 
    public function Paths() 
    { 
     return $this->hasMany('App\Path', 'tag_id', 'ID'); 
    } 
    public function Queries() 
    { 
     return $this->hasMany('App\Query', 'tag_id', 'ID'); 
    } 
} 

子は、私はPOSTリクエスト経由でこのすべてを実行すると、

class Query extends Model 
{ 
    protected $table = 'queries'; 
    public $timestamps = false; 
    public function Tag() 
    { 
     return $this->belongsTo('App\Unknown_Tag', 'tag_id', 'ID'); 
    } 
} 

class Path extends Model 
{ 
    protected $table = 'paths'; 
    public $timestamps = false; 
    public function Tag() 
    { 
     return $this->belongsTo('App\Unknown_Tag', 'tag_id', 'ID'); 
    } 

} 

オブジェクト親とすべての子がいます正しく保存されますが、すべての子オブジェクトにはnullに設定された外部キーがあります。私が手動で外部キーを変更する必要がある場合、すべて正常に動作するので、私はこれが私のデータベースの問題ではないと確信しています。私はここで行方不明になっていることは誰にも分かりますか?

EDIT:だけ明確にするために、誰もが今までにこれを見れば、これはエラー

+0

うわー、私は大きなダミーです。ちょうど私が手動でFKを設定できることが分かった。これは自動的に行われなければならないので、問題はまだ残っています – ConnorP

答えて

1

を返さない、laravelはデフォルト主キーが「ID」で前提としています。私は私のIDを 'ID'に設定していたので、laravelに使って知らせなければならなかった。

protected $ primaryKey = 'ID';

in私のUnknown_tag定義

関連する問題