Laravel Model :: create()仅填充时间戳

时间:2018-12-29 03:33:21

标签: php laravel

我有一个我要创建的模型。

Sale::create([
   'user_id'=>Auth::user()->id,
   'tenant_id'=>Auth::user()->tenant_id,
   'price'=>$price
]);

这将创建记录。除了填写的全部是created_at,updated_at和id字段。它会忽略我在此处选择的字段。

即使设置了可填充

   $fillable = ['user_id','tenant_id','app_id','price','other_fields etc etc']

这是怎么回事?为什么记录只插入这三个值,而没有其他内容?

如果我也这样做

      $sale = New Sale;
      $sale->user_id = Auth::user()->id;
      $sale->tenant_id = Auth::user()->tenant_id;
      $sale->price = $price;
      $sale->save();

它可以正常工作并输入完整的记录。

就目前而言,我就这样保留它,因为它可以工作。...但是我想弄清楚为什么Model :: create()无法正常工作。因为我真的很想在我创建新记录的App的其他任何地方都使用Model :: create()使我的编程始终与Im保持一致。

编辑-被要求发布销售模型

  namespace App;
  use Auth;
  use Illuminate\Database\Eloquent\Model;

  class Sale extends Model
   {

     public function __construct(array $attributes = [])
     {
        parent::__construct($attributes);
        $this->connection = env("DB_POOL_1_CONNECTION");
        $this->table = "sales";
     }

     // ******** INPUT VALIDATION ************* //
     /**
     * The attributes that are mass assignable.
     * @var array
     */
     protected $fillable =['tenant_id','rep_id''lead_id','invoice_id','total_price','net_price','tax'];
     protected $hidden = [];
     protected $guarded = [];

我还发布了我的File模型,该模型可以正常工作,并且功能相同

namespace App;
  use Auth;
  use Illuminate\Database\Eloquent\Model;

  class UserFile extends Model
   {

     public function __construct(array $attributes = [])
     {
        parent::__construct($attributes);
        $this->connection = env("DB_POOL_1_CONNECTION");
        $this->table = "user_files";
     }

     // ******** INPUT VALIDATION ************* //
     /**
     * The attributes that are mass assignable.
     * @var array
     */
     protected $fillable =['tenant_id','user_id''filename','description','file_size', 'file_path'];

     protected $hidden = [];
     protected $guarded = [];

仅销售模型不会插入Model :: create()。

UserFile模型可以。我的其他28个模型也是如此,它们都共享完全相同的模板,显然只是不同的表。

3 个答案:

答案 0 :(得分:1)

您忘记了>user_id中的tenant_id

Sale::create([
   'user_id' => Auth::user()->id,
   'tenant_id' => Auth::user()->tenant_id,
   'price' => $price
]);

尝试一下是否可行。

答案 1 :(得分:0)

您忘记正确放置箭头了:

Sale::create([
   'user_id' => Auth::user()->id,
   'tenant_id' => Auth::user()->tenant_id,
   'price' => $price
]);

答案 2 :(得分:0)

我想我在github上看到了你的问题。当create方法中包含Foreign_key约束时,它似乎像是laravel中的错误,它似乎不会插入该记录。

我相信您的tenant_id是这里的外键

github link