Php 在雄辩的生成器实例上不存在Laravel 8种子属性[id]
我正在为一位客户重建一个旧项目,并将其移至Laravel 8。我已经创建了所有模型,并将当前项目中的所有数据转换为json,这样我就可以将数据迁移为种子数据 我有一个Php 在雄辩的生成器实例上不存在Laravel 8种子属性[id],php,laravel,Php,Laravel,我正在为一位客户重建一个旧项目,并将其移至Laravel 8。我已经创建了所有模型,并将当前项目中的所有数据转换为json,这样我就可以将数据迁移为种子数据 我有一个Usercar模型,它与Car和User模型有belongsTo关系。我需要在播种过程中通过比较和匹配旧的id值来重新创建关系,以便创建新的记录和关系。我的所有种子程序都会成功运行,直到我到达**UsercarSeeder**,然后我得到一个属性[id]在雄辩的生成器实例上不存在的错误。我知道我错过了一些非常简单的事情。谢谢 数据库
Usercar
模型,它与Car
和User
模型有belongsTo
关系。我需要在播种过程中通过比较和匹配旧的id值来重新创建关系,以便创建新的记录和关系。我的所有种子程序都会成功运行,直到我到达**UsercarSeeder**
,然后我得到一个属性[id]在雄辩的生成器实例上不存在的错误。我知道我错过了一些非常简单的事情。谢谢
数据库/data/cars.json
[
{
"old_car_id": 31,
"start_year": 1955,
"end_year": 1958,
"model": "356 Carrera 1500 GS Coupe",
"horse_power": 110,
...
[
{
"old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
"first_name": "Charles",
"last_name": "Smith",
...
[
{
"old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
"old_car_id": 227,
"car_color": "Gray",
"year": 2015,
"tire_points": 140,
...
数据库/data/users.json
[
{
"old_car_id": 31,
"start_year": 1955,
"end_year": 1958,
"model": "356 Carrera 1500 GS Coupe",
"horse_power": 110,
...
[
{
"old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
"first_name": "Charles",
"last_name": "Smith",
...
[
{
"old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
"old_car_id": 227,
"car_color": "Gray",
"year": 2015,
"tire_points": 140,
...
数据库/data/user cars.json
[
{
"old_car_id": 31,
"start_year": 1955,
"end_year": 1958,
"model": "356 Carrera 1500 GS Coupe",
"horse_power": 110,
...
[
{
"old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
"first_name": "Charles",
"last_name": "Smith",
...
[
{
"old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
"old_car_id": 227,
"car_color": "Gray",
"year": 2015,
"tire_points": 140,
...
数据库/seeders/UsercarSeeder.php
<?php
namespace Database\Seeders;
use App\Models\User;
use App\Models\Car;
use App\Models\Usercar;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class UsercarSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$json = file_get_contents('database/data/user-cars.json');
$data = json_decode($json);
$user = User::where('old_user_id', 'old_user_id')->get();
$car = Car::where('old_car_id', 'old_car_id')->get();
foreach ($data as $obj) {
Usercar::create(array(
'user_id' => $user->id,
'car_id' => $car->id,
...
方法返回一组模型。如果需要单个对象,则应使用first()
方法
另外,where()
的外观应该类似于:
->其中($column,$value)
看起来您传递了两次列名,这可能会返回一个空集合。我真的不明白,但问题是id
,我想在'user\u id'=>$user->id
中,为什么在新表中有旧用户id
?最好只有id