Laravel Sushi模型与常规模型的单向关联无法正常工作?
问题解决:Sushi模型关联常规模型找不到表的问题
问题核心
Sushi模型(Phone)关联常规数据库模型(User)时,会默认套用Sushi的内存连接去查询users表,但常规User模型的数据存储在真实数据库(比如MySQL)中,因此触发了no such table: users的错误。
解决方案
修改Phone模型的user关联方法,强制关联查询使用常规模型的数据库连接,而非Sushi的内存连接。
方法一:直接指定默认数据库连接
public function user(): BelongsTo { return $this->belongsTo(\App\Models\User::class)->setConnection(config('database.default')); }
方法二:复用User模型的连接配置
这种方式更灵活,即使User模型自定义了数据库连接也能适配:
public function user(): BelongsTo { return $this->belongsTo(\App\Models\User::class) ->setConnection(\App\Models\User::query()->getConnectionName()); }
验证效果
修改后执行App\Models\Sushi\Phone::find(1)->user,即可正常返回对应的User模型实例,完全符合单向关联的要求——User模型无需做任何修改(不需要添加phone_id字段或关联方法)。
内容的提问来源于stack exchange,提问作者wivku
相关产品推荐
相关产品推荐

