php - 雄辩的关系方法不存在
问题描述
我有两张桌子,“教师”和“教师证书”,它们保存教师证书。
我正在尝试通过像这里这样的雄辩关系来保存教师证书https://laravel.com/docs/5.7/eloquent-relationships#the-create-method
教师模型:
namespace App\Models\Teachers;
use App\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Database\Eloquent\SoftDeletes;
class Teacher extends Model
{
public function Certificates()
{
return $this->hasMany(TeacherCertificates::class, 'teacher_id');
}
}
}
教师证书模型:
namespace App\Models\Teachers;
use App\User;
use Illuminate\Database\Eloquent\Model;
class TeacherCertificates extends Model
{
protected $table='teacher_certificates';
protected $fillable=['teacher_id','certificate'];
protected $touches=[Teacher::class];
public $timestamps=false;
}
和控制器:
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use App\Models\Teachers\Experiences;
use App\Models\Teachers\Skills;
use App\Models\Teachers\Teacher;
use App\Models\Teachers\TeacherCertificates;
use App\User;
use Illuminate\Http\Request;
use App\Http\Requests\TeacherCreateRequest;
use Illuminate\Support\Facades\DB;
class TeacherController extends Controller
{
public function store(TeacherCreateRequest $request)
{
DB::transaction(function () use ($request) {
$data = $request->all();
$user = User::create($data);
$data[ 'user_id']=$user->id;
$teacher = Teacher::create($data);
//certificates
$certificates=array_map(
function ($certificate) use ($teacher) {
return ['teacher_id' => $teacher->id,
'certificate' => $certificate];
}, explode('\n', $request->certifications));
$teacher->Certificates()->createMany($certificates);
}
}
}
我收到此错误:
BadMethodCallException
Method Illuminate\Database\Query\Builder::App\Models\Teachers\Teacher does not exist.
解决方案
问题在于$touches
教师类的属性定义,它应该是你类中方法的名称。
欲了解更多信息,请阅读 Laravel 的文档
推荐阅读
- laravel - 重写 laravel nova 中间件以响应 404
- c# - 用于简单登录的 C# 中的参数化查询
- javascript - Angular:Http vs fetch api
- .net-core - EntityFramework Core database first, Scaffold-DbContext A positional parameter cannot be found that accept argument '--use-database-names' 错误
- excel - FileSystemObject - 无法打开保存在文件夹中的文件
- swift - 错误类型“MyClass”在“onTimer”上没有成员
- android - PayPal Android SDK 不适用于印度货币 INR
- bash - Bash:回显和复制结果
- vb.net - 需要用计时器错开蛇的身体部位
- koa - 如何在 KOA 中解析二进制数据(“multipart/form-data”)?