これは前に何度もやったので、これは簡単な修正でなければなりません。しかし、それが立てば私は完全に困惑しています。次のコードを使用して、親オブジェクト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:だけ明確にするために、誰もが今までにこれを見れば、これはエラー
うわー、私は大きなダミーです。ちょうど私が手動でFKを設定できることが分かった。これは自動的に行われなければならないので、問題はまだ残っています – ConnorP