我定义了一个关系作者-书籍
然后我可以通过这个创建一本新书
$author = new author();
$author->books()->create();
在我看来,也能做到这一点
{{$author->books()->create()}}
所以每次网站加载时,我都会创建一本新书。我试着用一个按钮把它嵌入一个小脚本中。
<button onclick="addBook()">Add new book</button>
<p id="addBook"></p>
<script>
function addBook() {
document.getElementById("addBook").innerHTML = {{$author->books()->create()}};
}
</script>
脚本是在页面加载时加载的,当然执行时无需按下按钮。
最佳做法是什么?这样做是有意的吗?或者我应该更好地从表单中进行POST调用,并在控制器中处理创建?
您不能这样做。当代码到达document.getElementById("addBook").innerHTML = {{$author->books()->create()}};
行时,自动创建book,不要等待javascript方法。你需要api来完成这项工作,实际上你应该创建一个名为book/create的路由,并在点击后发送带有jquery或更多库的ajax请求
最好在控制器中执行此操作,并且在视图中使用雄辩查询是不正确的,最好使用Ajax或JavaScript来调用API,如:
$.post( "{{route('route.name')}}", { /*object you want to create*/ } );