【问题标题】:laravel how to specifiy the input columnslaravel如何指定输入列
【发布时间】:2014-08-08 15:05:09
【问题描述】:

我有一个 html 表单,其输入名称为 restaurantName,但我在数据库中的列是 name。我无法在控制器中使用它

Restaurant::create(Input::only('restaurantName'));

因为没有restaurantName 的列所以我的问题是如何告诉laravel restaurantName 映射到name

非常感谢

编辑

html 表单具有以下字段:

restaurantName
website
username
password
mobileNumber
firstName
lastName

数据库有两个表AdminRestaurant,每个餐厅有一个admin,每个餐厅一个admin,所以是一对一的关系

当我提交表单时,我会执行以下操作:

$input = Input::all();
 $admin = Admin::create(Input::only('username', 'password', 'mobileNumber', 'firstName', 'lastName'));

                $data = ['name' , Input::get('restaurantName'), 'website' => Input::get('website')];
                $restaurant = new Restaurant($data);
                $admin->restaurant()->save($restaurant);

admin 行已插入数据库,因此问题从$data 行代码开始。

例外是:

BadMethodCallException
Call to undefined method Illuminate\Database\Query\Builder::save()

【问题讨论】:

    标签: php mysql laravel laravel-4 blade


    【解决方案1】:

    首先,你不应该只是盲目地将用户输入传递给模型,其次,这个特殊问题与 laravel 完全无关。

    您的问题可以通过基本的 PHP 来解决。简单地说,创建您自己的输入数组。

    $data = [
        'field'    => Input::get('field'),
        'name'     => Input::get('restaurantName')
    ];
    

    似乎有一个严重的误解,认为 Laravel 是它自己的独立系统,它不是。它实际上是 PHP 代码的集合,它不会做任何用 PHP 做不到的事情,也不会阻止你做任何可以用 PHP 做的事情。

    【讨论】:

    • 你能解释一下你的代码吗?我应该如何处理 $data 变量?如何将其传递给 Input 函数?你说的field是什么?
    • 你没有向Input传递任何东西。 Input 是一个简化用户输入检索的库。 $data 变量将被传递给 create 函数,而 'field' 只是一个随机字段名称,用于向您展示它是如何工作的。我并不是要粗鲁,但这都是 PHP 的基础,在像这样复杂的事情之前可能值得研究一下。
    • 我将编辑问题以向您展示代码的结果:
    • 我编辑了这个问题,但我得到了一个例外,你能检查一下吗? save 函数不存在
    • 首先,你的$data数组是错误的,应该是'name' => Input..而不是'name', Input..。我也从字面上说,不要盲目地将数组传递给create,你应该先验证。您得到的错误与数组的关系绝对为零,这是因为您试图在看似非关系的情况下保存关系。
    猜你喜欢
    • 2020-02-03
    • 2015-09-01
    • 2016-06-17
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多