【发布时间】:2018-06-04 13:35:42
【问题描述】:
我正在尝试存储一个模型,它是一个链接表。 表:
Schema::create('game_has_users', function (Blueprint $table) {
$table->integer('game_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->foreign('game_id')->references('id')->on('games')->onUpdate('cascade')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
$table->timestamps();
});
Game_Has_Users 模型:
class Game_Has_Users extends Model
{
protected $table = 'game_has_users';
public function user()
{
return $this->hasOne('App\User', 'user_id');
}
public function game()
{
return $this->hasOne('App\Game', 'game_id');
}
}
我想存储一个游戏,然后,应该使用用户 ID 和游戏 ID 创建 Game_Has_Users 模型。
try {
$game = Game::create([]);
$user = User::where('name', $request->input('name'))->first();
// $game_users = Game_Has_Users::create([]);
// $game_users->user = $user->id;
// $game_users->game = $game->id;
// $game_users->save();
$test = Game_Has_Users::create([
'user_id' => $user->id,
'game_id' => $game->id
]);
return response()->json(['t' => $test, 'status' => 'ok']);
}
catch(\Exception $e) {
return response()->json(['status' => 'failed', 'message' => $e]);
}
但是,我总是收到以下响应:状态:失败,消息:[]。 它没有例外,所以我不知道我做错了什么。 我尝试了不同的方法,例如:为游戏 ID 和用户 ID 设置默认值,保存链接模型的不同方法。当我通过响应发送 $game->id 和 $user->id 时,它们确实有一个值。
【问题讨论】:
-
Game_Has_Users不应该是模型。这是一个数据透视表。您在游戏和用户之间存在多对多关系,因此请在您的游戏和用户模型中定义它。
标签: php mysql laravel laravel-5 eloquent