laravel 5 - 创造一个新的""在控制器方法中

时间:2015-12-02 09:45:58

标签: php laravel laravel-5 eloquent

我在这里看这个教程: http://laravel.com/docs/master/quickstart-intermediate#creating-the-task

但我不是盲目地追随它,而是试图让它与我的需求相关。我遇到了一个问题。我正在看这段代码:

/**
 * Create a new task.
 *
 * @param  Request  $request
 * @return Response
 */
public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required|max:255',
    ]);

    $request->user()->tasks()->create([
        'name' => $request->name,
    ]);

    return redirect('/tasks');
}

确定。所以在我的应用程序中我想创建一个国家。没有与之关联的用户,它只是将国家/地区名称发布到此路线的表单。我的表单通过验证,如果我使用以下代码,我可以将新的国家/地区记录保存到我的数据库中:

如果我替换

$request->user()->tasks()->create([
        'name' => $request->name,
    ]);

与......

$country = new Country;
$country ->name = $request->name;
$country ->save();

...然后这样就可以了。我不是真的想要这个。

我想要做的是使用与教程中的代码类似的东西。 谁能告诉我应该做些什么呢?

我尝试了一些不同的猜测,但没有运气。他们就是那个。猜测...

感谢。

DS

1 个答案:

答案 0 :(得分:1)

您在教程中看到的代码可以概括为"为给定用户创建任务"。可以按照教程中的方式创建任务对象,因为用户任务模型之间存在关联 - 请参阅 用户类中的tasks()方法。这就是为什么你可以,如果 $ user 存储一个类用户的对象,请调用 $ user-> tasks() - > create( ) - 因此,将创建类任务的对象并自动链接到该用户。

如果您想以相同的方式创建类国家/地区的对象,则需要在国家/地区和用户之间定义关系 - 但是在任务情况下它是有意义的(用户有自己的任务) ),它在你的应用程序中听起来不像你想要的东西(用户拥有自己的国家?)。