У меня есть модель ReleasePackages и модель артефактов, и между ними есть отношение "многие ко многим".
ReleasePackages.php
соответствует приведенному ниже:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ReleasePackages extends Model
{
public $timestamps = false;
/**
*/
public function artifacts()
{
return $$this->belongsToMany(
'App\Models\Artifacts',
'release_packages_artifacts',
'release_package_id',
'artifact_id'
);
}
}
и Artifacts.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Artifacts extends Model
{
public function artifact_type()
{
return $this->hasOne('ArtifactTypes');
}
public function release_packages()
{
return $$this->belongsToMany(
'App\Models\ReleasePackages',
'release_packages_artifacts',
'artifact_id',
'release_package_id'
);
}
}
Теперь в моем контроллере у меня есть следующий код:
$releasePackage = new ReleasePackages();
$releasePackage->package_name = $request->input('name');
$releasePackage->created_by = 1;
$releasePackage->approval_status = 'pending';
$releasePackage->save();
$artifacts = $request->input('artifacts');
$releasePackage->artifacts()->attach($artifacts);
Правильно сохраняет данные в таблице release_packages
. Но при попытке связать отношения выдает ошибку:
exception: "ErrorException"
file: "/var/www/html/maxdev/app/Models/ReleasePackages.php"
line: 15
message: "Undefined variable: {"package_name":"Package","created_by":1,"approval_status":"pending","id":15}"
Будет полезно, если кто-то сможет указать, что здесь пошло не так. Или есть какой-нибудь другой способ привязать отношения?