Я бегу следующий код в одном из контроллеров Laravel,Laravel синхронизируется многие-ко-многим отношения
$organisation->users()->sync($members);
Однако я, кажется, получаю следующее сообщение об ошибке с сервера,
{ «error»: {«type»: «ErrorException», «message»: «preg_replace(): несоответствие параметров, шаблон - это строка, а замена - это массив», «файл»: «/ Users/S/Sites/app- api/vendor/laravel/framework/src/Illuminate/Support/helpers.php "," line ": 885}}
Я думаю, что он жалуется на форму того, что я отправляю на синхронизацию в качестве аргумента, это массив, который выглядит так, как я предполагаю, потому что я отправляю плохо отформатированный массив?
Для создания массива я отправляю к синхронизации I контура массива, который отправляется в POST,
foreach($postData['members'] as $member) {
if($member['admin'] == 1) {
$members[] = array($member['id'] => array('is_admin' => 1));
} else {
$members[] = array($member['id'] => array('is_admin' => 0));
}
}
Я пытаюсь отправить массив, содержащий ключ, который является идентификатором членов, и то я хотел отправить некоторые данные в сводной таблице также, что поле is_admin
и значение может быть либо 1 или 0.
Если я вернусь $members
перед запуском синхронизации Laravel возвращает некоторые JSON, который выглядит, как это,
[
{
"1":{"is_admin":1}
},
{
"85":{"is_admin":0}
},
{
"86":{"is_admin":0}
}
]
Это правильный формат? Я делаю что-то неправильно?
теперь я получаю новую ошибку,
Спасибо за это, я теперь получаю новую ошибку, вызов метода не определен Осветите \ Database \ Query \ Builder :: синхронизации()
ради ясности здесь мои отношения,
Организация
public function users()
{
return $this->belongsToMany('User')->withPivot('is_admin');
}
Пользователь
public function organisations()
{
return $this->belongsToMany('Organisation')->withPivot('is_admin');
}
я неправ, полагая, что многие-ко-многим имеют отношение синхронизации?
здесь полный метод,
public function update($id)
{
//eturn Input::all('name');
$postData = Input::all();
$organisation = Organisation::find($id);
if(!empty($postData['group_name'])) {
$organisation->name = $postData['group_name'];
} else {
$organisation->name = $postData['name'];
}
$organisation->information = $postData['information'];
$organisation->type = $postData['type'];
$organisation->slug = $this->createSlug($postData['name']);
//Sort out the members are they admins etc.
if(isset($postData['members'])) {
$members = array();
foreach($postData['members'] as $member) {
$members[$member['id']] = array('is_admin' => $member['admin']);
}
}
if(isset($postData['clients'])) {
$clients = array();
foreach($postData['clients'] as $client) {
$clients[] = $client['id'];
}
}
if(isset($postData['projects'])) {
$projects = array();
foreach($postData['projects'] as $project) {
$projects[] = $project['id'];
}
}
if($organisation->save()) {
if(isset($members)) {
$organisation->users()->sync($members);
}
if(isset($clients)) {
$organisation->clients()->sync($clients);
}
if(isset($projects)) {
$organisation->projects()->sync($projects);
}
$organisation->load('users');
$organisation->load('teams');
$organisation->load('clients');
$organisation->load('projects');
return Response::make("success", 200);
} else {
return Response::make("Something has gone wrong", 500);
}
}
Спасибо за это, я теперь получаю новую ошибку , – Udders
И новая ошибка? Измените свой вопрос и добавьте сообщение об ошибке. – lukasgeiter
Soory не разрешил мне редактировать комментарий после отправки отправки, вопрос был обновлен. – Udders