문제

현재 LARAVLE를 배우고이 자습서를 따르려고합니다.그러나 IM은 Laravel 4를 사용하고 튜토리얼은 Laravel 3을 사용하고 있으므로 그 때문에 많은 것을 수정해야합니다. 컨트롤러 에이 방법이 있습니다

public function InsertTestData()
{   
    $logged_in_user = Auth::user(); 

    $photos = array(
        array(
            'user_id' => $logged_in_user->id,
            'location' => 'http://farm6.staticflickr.com/5044/5319042359_68fb1f91b4.jpg',
            'description' => 'Dusty Memories, The Girl in the Black Beret (http://www.flickr.com/photos/cloudy-day/)'
        ),
        array(
            'user_id' => $logged_in_user->id,
            'location' => 'http://farm3.staticflickr.com/2354/2180198946_a7889e3d5c.jpg',
            'description' => 'Rascals, Tannenberg (http://www.flickr.com/photos/tannenberg/)'
        ),
        array(
            'user_id' => $logged_in_user->id,
            'location' => 'http://farm7.staticflickr.com/6139/5922361568_85628771cd.jpg',
            'description' => 'Sunset, Funset, Nikko Bautista (http://www.flickr.com/photos/nikkobautista/)'
        )
    );
    $logged_in_user->photos()->save($photos);
}
.

그리고 이것이 내가 사용한 모델

class User extends Eloquent implements UserInterface, RemindableInterface {
    public function photos()
    {
    return $this->hasMany('Photo');
    }
}
.

이와 같이 오류가 발생합니다

Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, array given, called in /Library/WebServer/Documents/webpraktek/app/controllers/DashboardController.php on line 44 and defined
.

라인 44는이 라인

입니다.
$logged_in_user->photos()->save($photos);
.

클래스 사진의 모델

class Photo extends Eloquent
{
    public function user()
    {
        return $this->belongsTo('User');
    }

    public function photocomments()
    {
        return $this->hasMany('PhotoComment');
    }
}
.

나는 아직도 배우기 때문에이 문제를 해결하기 위해 아무 것도 모른다.왜 이것이 일어 났는가?이런 종류의 오류를 일으키는 LALAVEL 버전이 다릅니 까? 감사합니다

편집 : 이제 이것을 고정 시켰습니다.

foreach($photos as $photo) {
    $photos = new Photo();
    $photos->user_id = $photo['user_id'];
    $photos->location = $photo['location'];
    $photos->description = $photo['description'];
    $photos->save();
}
.

도움이 되었습니까?

해결책

내가 알 수있는 한, 당신이 새로운 사진 모델을 만들지 않아서 예제가 작동하지 않습니다.

이를 교체하십시오 :

$logged_in_user->photos()->save($photos);
.

다음과 같이 :

foreach ($photos as $photoData) {
    $photo = new Photo($photoData);
    $logged_in_user->photos()->save($photo);
}
.

다른 팁

배열에 ID가 설정된 ID가 이미 있으므로 $logged_in_user를 연결할 필요가 없으므로 대신 create를 사용하십시오.

Photo::create($photos);
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top