当前位置: 首页 > 知识库问答 >
问题:

无法在编辑页laravel上显示数据库值

洪念
2023-03-14

我使用Laravel5.7和LaravelCollective/html作为表单。

我有这3个表(不包括时间戳):

供应商:

|id|name|website|

产品:

|id|name|description|product_category_id|supplier_id|sales_price|buy_price|instock|discontinued|

产品类别:

|id|name|

我试图在编辑视图中显示产品类别和供应商的名称,但我无法这样做。

我知道我可以使用$product->product_category_id访问ID,但是我还需要名称。ID应该存储在数据库中,名称应该显示在edit视图中。

我试过:

在产品模型上创建雄辩的关系,如下所示:

public function category()
{
    return $this->hasOne('App\ProductCategory');
}

然后我使用$product->category(),它返回以下错误:

无法将Illuminate\Database\Eloquent\Relations\HasOne类的对象转换为字符串

我也尝试了$product->category()->name,它返回了以下错误:

未定义的属性:Illuminate\Database\Eloquent\Relations\HasOne::$Name

我错过了什么?

相关代码:

我的编辑视图:

<div class="row">
    <div class="col-sm-12">
        <div class="box box-danger">
            <div class="box-header with-border">
                <h3 class="box-title">Edit product {{$product->name}}</h3>
            </div>
            <div class="box-body">
                {!! Form::open(['action' => ['ProductsController@update', $product->id], 'method' => 'post']) !!}

                <div class="row">
                    <div class="col-sm-12">
                        <div class="form-group">
                            {{ Form::label('name', 'Product name') }}
                            {{ Form::text('name', $product->name, ['class' => 'form-control', 'placeholder' => 'Product name']) }}
                        </div>
                    </div>
                </div>

                <div class="row">
                    <div class="col-sm-12">
                        <div class="form-group">
                            {{Form::label('description', 'Product description')}}
                            {{Form::textarea('description', $product->description, ['id' => 'ckeditor', 'class' => 'form-control', 'style' => 'resize: vertical', 'placeholder' => 'Product description'])}}
                        </div>
                    </div>
                </div>

                <div class="row">
                    <div class="col-sm-6">
                        <div class="form-group">
                            {{Form::label('product_category_id', 'Product category')}}
                            {{Form::select('product_category_id', $categories->pluck('name', 'id'), /* here is where it should be */, ['id' => 'select2', 'class' => 'form-control select2', 'placeholder' => 'Product category'])}}
                            <p>Is the category you're looking for not in this list? Create it <a target="_blank" href="/product-categories/create">here</a>.</p>
                        </div>
                    </div>
                    <div class="col-sm-6">
                        <div class="form-group">
                            {{Form::label('supplier_id', 'Supplier')}}
                            {{Form::select('supplier_id', $suppliers->pluck('name', 'id'), null, ['id' => 'select2', 'class' => 'form-control select2', 'placeholder' => 'Supplier'])}}
                            <p>Is the supplier you're looking for not in this list? Add them <a target="_blank" href="/suppliers/create">here</a>.</p>
                        </div>
                    </div>
                </div>

                <div class="row">
                    <div class="col-sm-6">
                        <div class="form-group">
                            {{Form::label('sales_price', 'Sales price')}}
                            {{Form::number('sales_price', $product->sales_price, ['class' => 'form-control', 'placeholder' => 'Sales price'])}}
                        </div>
                    </div>
                    <div class="col-sm-6">
                        <div class="form-group">
                            {{Form::label('buy_price', 'Buy-in price')}}
                            {{Form::number('buy_price', $product->buy_price, ['class' => 'form-control', 'placeholder' => 'Buy-in price'])}}
                        </div>
                    </div>
                </div>

                <div class="row">
                    <div class="col-sm-6">
                        <div class="form-group">
                            {{Form::label('instock', 'In stock')}}
                            {{Form::select('instock', [0 => 'No', 1 => 'Yes'], null, ['id' => 'select2', 'class' => 'form-control select2', 'placeholder' => 'In stock'])}}
                        </div>
                    </div>
                    <div class="col-sm-6">
                        <div class="form-group">
                            {{Form::label('discontinued', 'Discontinued')}}
                            {{Form::select('discontinued', [0 => 'No', 1 => 'Yes'], null, ['id' => 'select2', 'class' => 'form-control select2', 'placeholder' => 'Discontinued'])}}
                        </div>
                    </div>
                </div>

                {{ Form::hidden('_method', 'PUT') }}
                {{ Form::submit('Save changes', ['class' => 'pull-right btn btn-default']) }}

                {!! Form::close() !!}
            </div>
        </div>
    </div>
</div>

产品表迁移

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->mediumText('description');
            $table->integer('product_category_id')->unsigned();
            $table->integer('supplier_id')->unsigned();
            $table->decimal('sales_price', 8, 2);
            $table->decimal('buy_price', 8, 2);
            $table->boolean('instock');
            $table->boolean('discontinued');

            $table->foreign('product_category_id')->references('id')->on('product_categories')->onDelete('cascade');
            $table->foreign('supplier_id')->references('id')->on('suppliers')->onDelete('cascade');

            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}

供应商表

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSuppliersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('suppliers', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('website');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('suppliers');
    }
}

产品类别表

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateProductCategoriesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('product_categories', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('product_categories');
    }
}

共有2个答案

杜哲彦
2023-03-14

好的,在尝试了更多的东西之后,结果发现我只需要输入ID,Laravel就会处理剩下的事情。

不确定为什么我之前没有尝试这个,但问题已经解决了。

对于具有类似/相同问题的任何人,输入现在如下所示:

    <div class="row">
      <div class="col-sm-6">
        <div class="form-group">
          {{Form::label('product_category_id', 'Product category')}}
          {{Form::select('product_category_id', $categories->pluck('name', 'id'), $product->product_category_id, ['id' => 'select2', 'class' => 'form-control select2', 'placeholder' => 'Product category'])}}
          <p>Is the category you're looking for not in this list? Create it <a target="_blank" href="/product-categories/create">here</a>.</p>
        </div>
      </div>
      <div class="col-sm-6">
        <div class="form-group">
          {{Form::label('supplier_id', 'Supplier')}}
          {{Form::select('supplier_id', $suppliers->pluck('name', 'id'), $product->supplier_id, ['id' => 'select2', 'class' => 'form-control select2', 'placeholder' => 'Supplier'])}}
          <p>Is the supplier you're looking for not in this list? Add them <a target="_blank" href="/suppliers/create">here</a>.</p>
        </div>
      </div>
    </div>
罗睿识
2023-03-14

请尝试调用$product->category(不带()),而改为$product->category()。如果函数返回一个关系,它将被视为一个属性。

所以您可以使用$product->category->name请尝试一下,并让我知道它是如何工作的。

 类似资料:
  • 我试图通过在控制器中执行以下操作在数据库中上载多个图像: 公共函数存储(请求$request){ 它采用图像表单,并将所选图像存储在public/image文件夹中,但在数据库中,它存储具有相同图像名称的所有图像。在显示的同时,它会多次显示相同的图像。 我知道这里的人有解决这个问题的办法,也许会有更好的主意。所以请帮我解决这个问题。提前谢谢。 上面的“完成”方法不适合我,因此我在控制器中执行了此操

  • 嗨,我需要同时显示xml和json数据。我可以通过JaxB在本地看到这一点,但在服务器上看不到相同的代码。当我把它部署到服务器时,我得到了这个错误。我不知道如何解决这个错误。无法解决这一点,尝试了很多但没有发生,在本地一切都很好,但当涉及到服务器它显示不同的异常。 错误500:org.springframework.web.util.NestedServletException:请求处理失败;嵌套

  • 我是非常新的WordPress。我将数据上传到cboard,但是当我试图借用链接来显示网站时,当我查看错误日志时,我得到了这条消息。 建立数据库连接时出错 有以下两条错误消息。我希望有人能帮助我。 PHP警告:require(/home/../public_html/wp includes/load.PHP):无法打开流:在/home/…中没有这样的文件或目录/公共html/wp设置。php第19

  • 所以,数据库(MySQL)中有一个包含姓名和照片(blob)的表。在我的网页应用程序的主页上有一个按钮,点击它后-它必须是另一个页面,包含数据库的所有结果。我使用servlet/jsp/、jdbc和MVC模式,我有带有字段名称和照片(字节[])的实体User,我有返回List的DAO类,我想在结果页面上从数据库中检索每个用户照片和照片附近的他的名字。 如何使用 servlet/jsp 执行此操作?

  • 如何在编辑表单中显示DateTime值的数据? 我的日期时间值是这样的: 我希望它显示在此输入中: 我的$variable- 编辑变量转储 对象(应用程序\飞机飞行)#527(26){[“表”:受保护]=

  • 我通常有更多面向代码的问题,但我需要有关CSV数据库的帮助。基本上,我需要将其格式更改为Fname;Lname;email.问题是我有13000行,所有数据都在1列中,分隔符是“;”。我使用了不同的CSV文件编辑器,他们都将数据放在1列中,所以我无法更改这些列的顺序...我无法从原始数据库中重新提取数据。那么有没有解决这个问题的方法,或者我被搞砸了? 所以我从一个CSV文件开始,它有“;”在每行的

  • 我想使文本编辑器显示显示在屏幕的左侧 如图所示,在编辑文本中写入的行数显示为1、2、3等 我也希望当用户向上或向下滚动的行数也滚动。提前致谢

  • 我是laravel的新手,当我使用单击函数提交表单时出现了一些问题。ajax jquery controller不会将数据保存到数据库,每次响应时都会使用整个html文件。请帮帮我。 关于标题的一些信息 请求URL:http://akshay.laravel/patient1?fname=asdknkl 状态代码:200 OK 远程地址:[::1]:80 推荐人策略:降级时无推荐人 缓存控制:无缓