【问题标题】:How to map exting table to a model in laravel如何将现有表映射到laravel中的模型
【发布时间】:2017-07-01 17:03:43
【问题描述】:

我有一个名为 casa 的 mysql 表,它有一个名为 casa_id 的主键。 我建立了一个模型:

 class Casa extends Model
{
 protected $table = 'casa';
public $casa_id;
public $anuncio_id;
public $banheiros;
public $capacidade_garagem;
public $dormitorios;
public $piscina;
public $preco;
public $dir_id;
public $cep;
public $numero_fotos;
public $visualizacoes;
public $ativo;
public $descricao;

public $timestamps = false;

protected $connection = 'eloquent_db';


}

执行此代码

$casa = \App\Casa::find($id);

我得到了他的错误:

SQLSTATE[42S22]:未找到列:1054 'where 子句'中的未知列 'casa.id'(SQL:select * from casa where casa.id = 238 限制 1)

我不知道 Eloquent,但我认为缺少一些约定。您能否给出将我现有的表映射到模型的指令,以便我可以使用 Eloquent。我更像是数据库第一人,但我正在学习 web api,不想偏离我的路径并开始编写 SQL 命令。我的表格列具有我的模型的确切名称。

我要执行的操作的代码:

$casa = \App\Casa::find($id);
$casa->dormitorios = 5;
$casa->save();

【问题讨论】:

    标签: php mysql laravel eloquent


    【解决方案1】:

    改成:

    class Casa extends Model{
      protected $table = 'casa';
      protected $primaryKey = 'casa_id';
      protected $connection = 'eloquent_db';
      public    $timestamps = false;
    } 
    
    $casa = \App\Casa::find($id);
    

    【讨论】:

    • 我现在的问题是我无法更新表格。没有抛出异常,只是没有更新。
    • @Diego Alves 但是你在模型的所有字段中定义了什么?
    • 我只更新了一个属性。有问题吗?
    • @Diego Alves 对不起,我回答了第一个问题。附言想想,应该阅读更多文档。
    • 我找到了必须将表列指定为数组的答案。 protected $fillable = array('anuncio_id' ... 'descricao');它就像魔术一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多