我有一个我要创建的模型。
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个模型也是如此,它们都共享完全相同的模板,显然只是不同的表。
答案 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
是这里的外键