Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-跨数据库关系_Php_Mysql_Laravel - Fatal编程技术网

Php Laravel-跨数据库关系

Php Laravel-跨数据库关系,php,mysql,laravel,Php,Mysql,Laravel,我刚刚学习了拉威尔,我正在尝试创建我自己的项目。现在我有一个挑战 我有三张桌子。数据库A中有2个表,数据库B中有1个表 数据库B中的表不可编辑 表架构 1. conn1.Db_A.app_schedules id | name | in | out -------------------------------- 1 | 7AM-7PM | 07:00 | 19:00 2. conn1.Db_A.app_schedule_schedule app_schedu

我刚刚学习了拉威尔,我正在尝试创建我自己的项目。现在我有一个挑战

我有三张桌子。数据库A中有2个表,数据库B中有1个表

数据库B中的表不可编辑

表架构

1. conn1.Db_A.app_schedules
 id  | name    | in    | out   
--------------------------------
  1  | 7AM-7PM | 07:00 | 19:00 


2. conn1.Db_A.app_schedule_schedule
 app_schedule_id | schedule_id | name
----------------------------------------------------
     1           |      5      | Long Shift
     1           |     32      | Long Morning Shift


3. conn2.Db_B.schedule
 idschedule | schedulename
----------------------------------------------------
     5      | Long Shift
    32      | Long Morning Shift
模型AppSchedule.php

class AppSchedule extends Model
{
    //
    protected $connection = 'conn1';
    protected $table = 'app_schedules';

    protected $fillable = [
        'created_at',
        'updated_at',
        'name',
        'in',
        'out',
        'remarks',
    ];

    public function schedules()
    {
        return $this->belongsToMany(Schedule::class)->withPivot('schedule_id', 'name');
    }
}
class Schedule extends Model
{
    protected $connection = 'conn1';
    protected $table = 'app_schedule_schedule';

    public function appSchedules()
    {
        return $this->belongsToMany(AppSchedules::class)->withPivot('schedule_id', 'name');
    }
}
class MainSchedule extends Model
{
    //
    protected $connection = 'conn2';
    protected $table = 'schedule';
}
class AppSchedulesController extends Controller
{
    public function create()
    {
        //
        $schedules = MainSchedule::all();
        return view('admin.schedules.create')->with('schedules', $schedules);
    }

    public function store(Request $request)
    {
        //
        $appschedule = AppSchedule::create($request->all());

        $mainScheIds = $request->input('mainScheIds', []);
        for($mainScheId=0; $mainScheId < count($mainScheIds); $mainScheId++){
            if($mainScheIds[$mainScheId] != '') {
                $appschedule->schedules()->attach($mainScheIds[$mainScheId], ['name' => MainSchedule::select('schedulename')->where('idschedule', $mainScheIds[$mainScheId])->value('schedulename')]);
            }
        }

        $appSchedules = AppSchedule::all();
        
        return view('admin.schedules.index')->with('appSchedules', $appSchedules);
    }
}
Model Schedule.php

class AppSchedule extends Model
{
    //
    protected $connection = 'conn1';
    protected $table = 'app_schedules';

    protected $fillable = [
        'created_at',
        'updated_at',
        'name',
        'in',
        'out',
        'remarks',
    ];

    public function schedules()
    {
        return $this->belongsToMany(Schedule::class)->withPivot('schedule_id', 'name');
    }
}
class Schedule extends Model
{
    protected $connection = 'conn1';
    protected $table = 'app_schedule_schedule';

    public function appSchedules()
    {
        return $this->belongsToMany(AppSchedules::class)->withPivot('schedule_id', 'name');
    }
}
class MainSchedule extends Model
{
    //
    protected $connection = 'conn2';
    protected $table = 'schedule';
}
class AppSchedulesController extends Controller
{
    public function create()
    {
        //
        $schedules = MainSchedule::all();
        return view('admin.schedules.create')->with('schedules', $schedules);
    }

    public function store(Request $request)
    {
        //
        $appschedule = AppSchedule::create($request->all());

        $mainScheIds = $request->input('mainScheIds', []);
        for($mainScheId=0; $mainScheId < count($mainScheIds); $mainScheId++){
            if($mainScheIds[$mainScheId] != '') {
                $appschedule->schedules()->attach($mainScheIds[$mainScheId], ['name' => MainSchedule::select('schedulename')->where('idschedule', $mainScheIds[$mainScheId])->value('schedulename')]);
            }
        }

        $appSchedules = AppSchedule::all();
        
        return view('admin.schedules.index')->with('appSchedules', $appSchedules);
    }
}
Model MainSchedule.php

class AppSchedule extends Model
{
    //
    protected $connection = 'conn1';
    protected $table = 'app_schedules';

    protected $fillable = [
        'created_at',
        'updated_at',
        'name',
        'in',
        'out',
        'remarks',
    ];

    public function schedules()
    {
        return $this->belongsToMany(Schedule::class)->withPivot('schedule_id', 'name');
    }
}
class Schedule extends Model
{
    protected $connection = 'conn1';
    protected $table = 'app_schedule_schedule';

    public function appSchedules()
    {
        return $this->belongsToMany(AppSchedules::class)->withPivot('schedule_id', 'name');
    }
}
class MainSchedule extends Model
{
    //
    protected $connection = 'conn2';
    protected $table = 'schedule';
}
class AppSchedulesController extends Controller
{
    public function create()
    {
        //
        $schedules = MainSchedule::all();
        return view('admin.schedules.create')->with('schedules', $schedules);
    }

    public function store(Request $request)
    {
        //
        $appschedule = AppSchedule::create($request->all());

        $mainScheIds = $request->input('mainScheIds', []);
        for($mainScheId=0; $mainScheId < count($mainScheIds); $mainScheId++){
            if($mainScheIds[$mainScheId] != '') {
                $appschedule->schedules()->attach($mainScheIds[$mainScheId], ['name' => MainSchedule::select('schedulename')->where('idschedule', $mainScheIds[$mainScheId])->value('schedulename')]);
            }
        }

        $appSchedules = AppSchedule::all();
        
        return view('admin.schedules.index')->with('appSchedules', $appSchedules);
    }
}
控制器AppSchedulesController.php

class AppSchedule extends Model
{
    //
    protected $connection = 'conn1';
    protected $table = 'app_schedules';

    protected $fillable = [
        'created_at',
        'updated_at',
        'name',
        'in',
        'out',
        'remarks',
    ];

    public function schedules()
    {
        return $this->belongsToMany(Schedule::class)->withPivot('schedule_id', 'name');
    }
}
class Schedule extends Model
{
    protected $connection = 'conn1';
    protected $table = 'app_schedule_schedule';

    public function appSchedules()
    {
        return $this->belongsToMany(AppSchedules::class)->withPivot('schedule_id', 'name');
    }
}
class MainSchedule extends Model
{
    //
    protected $connection = 'conn2';
    protected $table = 'schedule';
}
class AppSchedulesController extends Controller
{
    public function create()
    {
        //
        $schedules = MainSchedule::all();
        return view('admin.schedules.create')->with('schedules', $schedules);
    }

    public function store(Request $request)
    {
        //
        $appschedule = AppSchedule::create($request->all());

        $mainScheIds = $request->input('mainScheIds', []);
        for($mainScheId=0; $mainScheId < count($mainScheIds); $mainScheId++){
            if($mainScheIds[$mainScheId] != '') {
                $appschedule->schedules()->attach($mainScheIds[$mainScheId], ['name' => MainSchedule::select('schedulename')->where('idschedule', $mainScheIds[$mainScheId])->value('schedulename')]);
            }
        }

        $appSchedules = AppSchedule::all();
        
        return view('admin.schedules.index')->with('appSchedules', $appSchedules);
    }
}
但是当我写这个索引函数时

public function index()
{
   $appSchedules = AppSchedule::with('schedules')->get();

   return view('admin.schedules.index')->with('appSchedules', $appSchedules);
}
我犯了个错误

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'app_schedule_schedule' (SQL: select `app_schedule_schedule`.*, `app_schedule_schedule`.`app_schedule_id` as `pivot_app_schedule_id`, `app_schedule_schedule`.`schedule_id` as `pivot_schedule_id`, `app_schedule_schedule`.`name` as `pivot_name` from `app_schedule_schedule` inner join `app_schedule_schedule` on `app_schedule_schedule`.`id` = `app_schedule_schedule`.`schedule_id` where `app_schedule_schedule`.`app_schedule_id` in (1))
我知道我必须为每个表提供唯一的别名。但我不知道怎么做,我想得到这样的结果

我的关系错了吗

谢谢。

这肯定会有用的

public function index()
{
   $appSchedules = AppSchedule::with(['schedules' => function ($query) {
                       $query->on('conn2');
                   }])->get();

   return view('admin.schedules.index')->with('appSchedules', $appSchedules);
}
这肯定会奏效

public function index()
{
   $appSchedules = AppSchedule::with(['schedules' => function ($query) {
                       $query->on('conn2');
                   }])->get();

   return view('admin.schedules.index')->with('appSchedules', $appSchedules);
}

我想你忘记配置pivot模型了。看看这些文档:如果这还不够,请用你的问题回复。我的模型时间表已经更新了。但我还是有同样的问题。使用Illumb\Database\Elount\Relations\Pivot;类调度扩展了Pivot{protected$connection='conn1';protected$table='app_Schedule_Schedule';公共函数appSchedules(){return$this->belongsToMany(appSchedules::class)->withPivot('Schedule_id',name');}}我想你忘了配置Pivot模型。看看这些文档:如果这还不够,请用你的问题回复。我的模型时间表已经更新了。但我还是有同样的问题。使用Illumb\Database\Elount\Relations\Pivot;类调度扩展Pivot{protected$connection='conn1';protected$table='app_Schedule_Schedule';公共函数appSchedules(){return$this->belongsToMany(appSchedules::class)->withPivot('Schedule_id',name');}