我正在用一些电影信息创建这种数据库。
逻辑结构非常简单,一部电影有很多演员,一个演员拍了很多电影,所以这是一种多对多的关系。
我还使用select2
library创建了一个简单的输入,其中写入了标记之类的参与者,并用逗号或空格键(此处是指向文档的链接)将它们分隔开,下面是一个简单的快照,以便更好地理解结果
在创建/存储函数中,我不需要检查是否存在任何关系,因为电影是新的。所以我只需要检查演员是否已经存在于数据库中,如果没有保存他们。
我的控制器store()
函数看起来像:
foreach ($request->input('actors') as $key => $new_actor) {
// if actors doesn't exist in the db it save it.
$check = Actor::where('name', '=', $new_actor)->count();
if ($check === 0) {
$actor = new Actor;
$actor->name = $new_actor;
$actor->save();
}
// Here it creates the relationship
$actor = Actor::where('name', '=', $new_actor)->first();
$film->actors()->attach($actor->id);
}
问题
编辑电影时,更改演员,例如删除或添加新演员。我需要在控制器中检查是否存在新的关系,或者是否必须删除一些关系。我怎么做?
这是我的控制器update()
函数,当然根本不起作用
foreach ($request->input('actors') as $key => $new_actor) {
// if actors doesn't exist in the db it save it.
$check = Actor::where('name', '=', $new_actor)->count();
if ($check === 0) {
$actor = new Actor;
$actor->name = $new_actor;
$actor->save();
}
$actors = $film->actors()->get();
foreach ($actors as $key => $actor) {
if ($actor->name === $new_actor) {
$actor = Actor::where('name', '=', $new_actor)->first();
$film->actors()->attach($actor->id);
}
}
}
谢谢你的帮助。
好吧我找到路了。第一部分检查是否有新的参与者,如果为真,它将在参与者表中创建一个新行。对于第二部分,检查输入是否有变化,将新数组与保存在数据库中的关系进行比较,这样它就可以检测是否删除了一些参与者,然后也删除了关系。
foreach ($request->input('actors') as $key => $new_actor) {
// if actors doesn't exist in the db it save it.
$check = Actor::where('name', '=', $new_actor)->count();
if ($check === 0) {
$actor = new Actor;
$actor->name = $new_actor;
$actor->save();
}
// If the relation doesn't exists it creates it.
if (!$film->hasActor($new_actor)) {
$actor = Actor::where('name', '=', $new_actor)->first();
$film->actors()->attach($actor->id);
}
// If the relation has been deleted, it deletes it.
$actors = $film->actors()->get();
$new_actors = $request->input('actors');
foreach ($actors as $key => $actor) {
$check = in_array($actor->name, $new_actors);
if ($check === false) {
$film->actors()->detach($actor->id);
}
}
}
使用雄辩的它并没有直接的方法来做到这一点。但是你可以像这样使用数据库立面
$actors_film_relation = \DB::table('actor_film')->pluck('actor_id')->unique();
通过现在使用它,您可以获得至少一部电影的演员名单。
删除用户之前,您可以检查actor_id不在$actor_film_relation列表中,如下所示
if( !in_array( $id, $actors_film_realtion)) { $actor->delete(); }
所以现在,与至少一部电影相关的演员不会被删除。
我有一个spring rest服务,它接受Person对象。Person对象具有名称、电话号码和电子邮件。当添加一个人时,电话号码是强制性的。如果存在电话号码属性,它将使用或或验证是否为空。但是如果属性不存在,验证就不起作用。请建议提供任何验证注释,以检查JSON请求中是否存在该属性。 以下是请求体测试用例 {“name”:“anu”,“phonenumber”:“”,“email”:“test@
我有一个进度条,我试图在控制器的javaFX中更新它。我正在根据一个名为Generate()的函数更新进度条,如果它被调用,它应该更新主控制器内的进度条。但是,我拥有的代码不会更新它,而是更新了进度条的新实例。 我的DrawerContentController中的Generate方法是: 在我的主控制器中,我使用场景构建器通过fxml设置了进度条,我正在尝试从DrawerContentContr
我们正在尝试做一些具有登录屏幕的网站。但是我们有一个问题。我们的域是本地主机/登录/用户。但是,如果用户进入localhost/Home/Index,他/她无需登录即可访问我们的主站点。因此,我们将 [授权] 写入索引控制器。但我不知道我必须使用什么。我是否必须在我们的项目中使用AuthorizeAttribute? 如何访问LoginController/Authentication函数中的索引
As we learned earlier in the book, the validate method on a Model is called before set and save, and is passed the model attributes updated with the values from these methods. By default, where we def
晚上好,我正在尝试在下面的场景中使用Hibernate验证器:
我正在使用Spring JDBCTemplate batchUpdate在批中插入数据。我想验证数据是否已成功插入。JDBCTemplate batchUpdate返回一个int[][],那么验证数据是否插入的正确方法是什么? 此链接表示“所有批处理更新方法都返回一个int数组,其中包含每个批处理条目的受影响行数。此计数由JDBC驱动程序报告,并且在这种情况下它并不总是可用,在这种情况下JDBC驱