Я разрабатываю систему, которая использует Maatwebsite для чтения и записи данных в базу данных из таблицы Excel. , который работает нормально. Теперь перед вставкой данных система проверяет наличие записей в родительской таблице. И если есть какая-либо запись, которая соответствует записи листа, система вставляет внешний ключ в дочернюю схему, а если нет, система сначала создает его, а затем вставляет его идентификатор в качестве внешнего ключа.
Вот класс импорта:
public function collection(Collection $rows){
$sub_chap = SubChapter::where(['chap_id' => $this->chap_id])->get();
$chapter = Chapter::where(['chap_id' => $this->chap_id])->first();
$author = Author::where(['author_status' => 1])->get();
$book = $chapter->book_id;
$author_id = 0;
$sub_chap_id = 0;
/* Working perfectly fine here...
foreach($author as $a){
echo $a->a_name."\r";
}
*/
foreach ($rows as $row){
if($row['quote_english'] != ""){
foreach($sub_chap as $sub){
if(trim($sub->sub_chap_english) == trim($row['sub_chap_english'])){
$sub_chap_id = $sub->sub_chap_id;
break;
} else{
$sub_chap_id = 0;
}
}
if($author->count() > 0){
foreach($author as $athr){
$author_id = (trim($athr->author_name) == trim($row['author_name']))? $athr->author_id : $author_id = 0;
}
}
if($author_id == 0){
$author = Author::create([
'author_name' => $row['author_name'],
...
...
'author_status' => 1,
]);
$author_id = $author->author_id;
}
$quote = Quote::create([
'quote_english' => $row['quote_english'],
'author_id' => $author_id,
'sub_chap_id' => $sub_chap_id,
'chap_id' => $this->chap_id,
'book_id' => $book
]);
}
}
}
Он говорит:
Попытка получить свойство author_name не-объекта
Я знаю, что эта ошибка возникает, когда вы пытаетесь получить доступ к свойству объекта из экземпляра, не являющегося объектом. get () как обычно возвращает объект коллекции и отлично работает вне цикла foreach (). я не могу понять, почему он не работает внутри цикла. Любая помощь будет оценена по достоинству!
var_dump($athr);
перед этой строкой и посмотреть, что, по его мнению, представляет собой переменная. - person Nigel Ren   schedule 14.09.2019object(Illuminate\Database\Eloquent\Collection)#9051 (1) { ["items":protected]=> array(4)...
. Я также проверяю, что dd ($ athr) возвращает объект коллекции. - person Saud   schedule 14.09.2019